java 中abstract class和interface有什么区别
4个回答
展开全部
abstract 修饰的CLASS是抽象类
抽象类(abstract class)可以有抽象方法,也可以有具体是方法,抽象类只能支持单继承
interface 接口
接口可以有抽象的方法,不存在具体的方法,接口可以多继承(多实现)
如下是我以前学习的一些笔记你可以参考下
/*理解java接口定义
* 1.JAVA接口没有构造器
* 2.JAVA接口中的成员变量必须显式赋初始值
* 3.JAVA接口中的方法没有方法体,定义形式是[public][abstract] 方法类型 [方法名]([参数列表]);
* 4.JAVA接口的定义形式如下:
* [修饰符] interface 接口名[extends 父接口名列表]{
[public] [static] [final] 数据类型 成员变量名=变量值;
[public][abstract] 方法类型 方法名([参数列表]);
}
*
* 5.JAVA接口中的成员变量默认为public static final类型的,如inti=1; 相当于是public static final inti=1;
* JAVA接口中常量默认是加了public static final 意味着:公用,共用,并且不可更改。
* 6.JAVA接口是不能被实例化的
* 7.JAVA接口中的方法不能用static修饰
* 8.JAVA接口中的所有的方法都是抽象的,不管有没abstract修饰,且默认是
public abstract 方法类型 方法名([参数列表]);
* 9.JAVA接口中子接口可以继承多个父接口,子类可以实现多个父接口
* */
/*理解JAVA抽象类
* 1.抽象类不能被实例化.
* 2.抽象类有构造器,且他的构造在他的子类被实例化时被调用的顺序和普通类调用的顺序是一样的(先父后子).
* 3.抽象类内部的方法可以不是抽象方法,也就是说抽象类内部可以有具体的方法.
* 4.抽象类的抽象方法属于一种不完整的方法,只含有声明和定义,没有方法主体.
* 5.如果抽象的某个子类是普通类(非abstract类型的类),那么该子类必须Override抽象类中所有的抽象方法.
* 6.抽象类的子类也是抽象类的话,那么该子类既可以Override父类中的方法,也可以不Override父类中的方法.
* 7.普通类中不能定义抽象方法.
* 8.static不能修饰抽象方法
* 备注:为了方便理解,所谓的普通是指如下形式定义的类
* public class X{} 或 class A XX{}
* */
抽象类(abstract class)可以有抽象方法,也可以有具体是方法,抽象类只能支持单继承
interface 接口
接口可以有抽象的方法,不存在具体的方法,接口可以多继承(多实现)
如下是我以前学习的一些笔记你可以参考下
/*理解java接口定义
* 1.JAVA接口没有构造器
* 2.JAVA接口中的成员变量必须显式赋初始值
* 3.JAVA接口中的方法没有方法体,定义形式是[public][abstract] 方法类型 [方法名]([参数列表]);
* 4.JAVA接口的定义形式如下:
* [修饰符] interface 接口名[extends 父接口名列表]{
[public] [static] [final] 数据类型 成员变量名=变量值;
[public][abstract] 方法类型 方法名([参数列表]);
}
*
* 5.JAVA接口中的成员变量默认为public static final类型的,如inti=1; 相当于是public static final inti=1;
* JAVA接口中常量默认是加了public static final 意味着:公用,共用,并且不可更改。
* 6.JAVA接口是不能被实例化的
* 7.JAVA接口中的方法不能用static修饰
* 8.JAVA接口中的所有的方法都是抽象的,不管有没abstract修饰,且默认是
public abstract 方法类型 方法名([参数列表]);
* 9.JAVA接口中子接口可以继承多个父接口,子类可以实现多个父接口
* */
/*理解JAVA抽象类
* 1.抽象类不能被实例化.
* 2.抽象类有构造器,且他的构造在他的子类被实例化时被调用的顺序和普通类调用的顺序是一样的(先父后子).
* 3.抽象类内部的方法可以不是抽象方法,也就是说抽象类内部可以有具体的方法.
* 4.抽象类的抽象方法属于一种不完整的方法,只含有声明和定义,没有方法主体.
* 5.如果抽象的某个子类是普通类(非abstract类型的类),那么该子类必须Override抽象类中所有的抽象方法.
* 6.抽象类的子类也是抽象类的话,那么该子类既可以Override父类中的方法,也可以不Override父类中的方法.
* 7.普通类中不能定义抽象方法.
* 8.static不能修饰抽象方法
* 备注:为了方便理解,所谓的普通是指如下形式定义的类
* public class X{} 或 class A XX{}
* */
2012-07-31
展开全部
abstract修饰的类中可以有非抽象的方法,而interface修饰的类中全是抽象方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
abstract class抽象类 可以有抽象方法和具体方法,也可以定义成员变量和成员常量。
interface 接口只能定义抽象方法与常量,不能有具体方法也不能定义成员变量。
interface 接口只能定义抽象方法与常量,不能有具体方法也不能定义成员变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
abstract class是抽象类,可以有具体方法的实现
interface 接口,不能有具体方法的实现
interface 接口,不能有具体方法的实现
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询