×

抽象类和接口 抽象类

接口和抽象类有什么区别?抽象类怎么实例化

admin admin 发表于2022-07-05 10:50:27 浏览106 评论0

抢沙发发表评论

接口和抽象类有什么区别


1、意思不同:

接口(硬件类接口)是指同一计算机不同功能层之间的通信规则称为接口。

抽象类用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

2、存在情况不同:

接口当中不能存在非抽象的方法。

抽象类当中可以存在非抽象的方法。

3、成员变量不同:

接口中的成员变量默认的都是静态常量(static final)。

抽象类中的成员变量可以被不同的修饰符来修饰。

4、概念不同:

接口是一种行为规范。

抽象类是对象的抽象。

1、抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用。

2、允许(但不要求)抽象类包含抽象成员。

3、抽象类不能被密封。

扩展资料:

接口和抽象类的相似之处:

1、不能实例化。

2、包含未实现的方法声明。

3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)。

参考资料来源:百度百科-接口

参考资料来源:百度百科-抽象类




抽象类怎么实例化


抽象类就一定不可以实例化吗?
呵呵,不一定哦。。看下面的例子:
public abstract class YourClassName
{
public abstract Object someMethod(...);
}
在你要有的地方

YourClassName ycn = (YourClassName) java.lang.reflect.Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class{YourClassName.class},new java.lang.reflect.
InvocationHandler(){
public Object invoke(Object proxy,Method m,Object params) throws Exception{return null;}
});

只是这个实例没有任何用处,他所有的方法都直接返回

如果要使不是abstract的方法和原来的一样,
那么修改invoke函数,判断m是不是抽象的
不是就调用proxy中的方法
-抽象类和接口

java抽象类和抽象方法之间的关系


1.抽象方法:在类中没有方法体的方法,就是抽象方法。
2.抽象类:含有抽象方法的类就叫抽象类。
3.抽象类中的抽象方法必须被实现!
4.如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类!
5.抽象类中的普通方法,可以不必实现。
6.用abstract来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。
7.抽象类不能被实例化。
8.抽象方法只需声明,而不需实现某些功能含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。
-抽象类