为什么不能创建abstract 类的实例
发布网友
发布时间:2022-04-20 22:54
我来回答
共4个回答
热心网友
时间:2023-07-31 06:14
你要这样想。 如果可以创建abstract实例的话,那么调用这个实例的abstract方法有没有意义?会返回什么东东?
如果可以创建的话,假如创建实例的时候自动忽略掉那些abstract修饰的方法,那么你这个abstract 类和一个普通类有什么区别? 为什么还要存在abstract 呢?
总结起来:如果可以创建abstract类的话,那么你就会发现其中必有自相矛盾的情况,如果去掉这些自相矛盾的情况,那么你又发现现在已经存在了这类的东西 (和普通类没区别)。
关于abstract修饰后的含义以及理解的话,百度一下一堆,这点我就不跟你讲了,
以上是跟你讲一下关于java的内部逻辑上“潜约束”了abstract实例的存在。
其实这样写:
public abstract class TestA {
public abstract void fun();
}
然后再另一个类中写:
TestA a = new TestA() {
public void fun() {
System.out.println(123);
}
};
这样也是对的,同样接口也可以这种模式的实例出来,就如我说的,如果你想实例化抽象类或者接口的话,那么你就的在实例化的同时也实现其中未实现的方法。
在意义上就代表这个实例是这个抽象类其中一个缺省子类的实例了。(不知道你能不能听懂)
热心网友
时间:2023-07-31 06:15
这是java语法规定的,它就是java界的定理不能违背它。java是面向对象的,抽象类不能产对象,只能由其非抽象子类产生实例。
热心网友
时间:2023-07-31 06:16
因为他是abstract类,所以不能
这是语言的规定,从面向对象的思想上来解释的话,告诉你去买一只动物,你知道买什么么?动物这个概念就是抽象的
热心网友
时间:2023-07-31 06:17
1、举个例子,比如 人-男人-小明,
那么 人就是接口,男人就是abstract抽象类,小明就是实例对象。
只有实例对象才是可以被创建的。你可以把小明说成男人,可以把小明看*,可是不是所有的男人都是小明。这也就是从概念上为什么不能创建abstract的实例。
2、所以从语法上,强制规定不能创建abstract的实例。