云计算百科
云计算领域专业知识百科平台

Java基础--抽象类和接口

抽象类:

Java中有一个关键字:abstract,可以用于修饰类、成员方法

注意事项:

1、抽象类中不一定要有抽象方法,有抽象方法的类必须是抽象类

2、类中有的成员:成员变量、方法、构造器、抽象类都可以有

3、抽象类不能创建对象,仅作为一种特殊的父类,让子类继承并实现

4、一个类继承抽象类,必须重写父类中的所有抽象方法,否则这个类也必须定义成抽象类

使用抽象类的好处:父类知道子类都要做某个行为,但每个子类要做的情况不一样,父类就定义为抽象方法,交给子类去重写。

我们设计这样的抽象类,就是为了更好地支持多态

注意:抽象方法不能有方法体

接口:

接口可以看做一个特殊的抽象类

jdk8之前 接口里面只能定义常量和抽象方法

注意:

接口中定义常量时可以省略public static final,默认会加上去

接口中定义抽象方法可以省略public abstract,默认会加上去

与抽象类类似,接口不能创建对象

接口是用来被类实现(implement)的,实现接口的类成为实现类,一个类可以同时实现多个接口

接口的好处:

弥补了类单继承的不足,一个类可以同时实现多个接口,使类的角色更多,功能更强大

让程序可以面向接口编程,可以更灵活方便地切换各种业务实现,更利于解耦合

一个类可以同时继承一个类,实现多个接口

class Student extends People implements Driver, Boyfriend { }

jdk8之后,接口新增了三种形式的方法

默认方法:必须加default关键字修饰(默认为public),使得可以在接口内定义实体函数,要用接口的实现类的对象来调用

私有方法(jdk9开始支持):用private关键字修饰,在接口内定义实体函数,要用接口内其他的实体方法来调用,不能在接口外调用

静态方法:用static关键字修饰(默认为public),在接口内定义实体函数,只能使用当前接口名来调用

接口的注意事项:

1.接口与接口可以多继承:一个接口可以同时继承多个接口(接口继承时用extends)

2.一个接口继承多个接口,如果多个接口中存在方法签名冲突(方法名和参数列表完全一样,返回值不一样),则此时不支持多继承,也不支持多实现

3.一个类继承了父类,又同时实现了接口,如果父类中和接口中有同名的默认方法,实现器会优先用父类的

4.一个类实现了多个接口,如果多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可

抽象类和接口的相同和不同:

相同:

1.都是抽象形式,都可以有抽象方法,都不能创建对象

2.都是派生子类形式,抽象类是被子类继承使用,接口是被实现类实现

3.一个类继承抽象类,或者实现接口,都必须重写完他们的抽象方法,否则自己要成为抽象类

4.都能支持多态,都能够实现解耦合

不同:

1.抽象类中可以定义类的全部普通成员,接口只能定义常量、抽象方法

2.抽象类只能被类单继承,接口可以被类多实现

赞(0)
未经允许不得转载:网硕互联帮助中心 » Java基础--抽象类和接口
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!