以下是关于抽象类、抽象方法以及接口的详细解释,其中的例子还有括号补充的内容可以帮助初学者更好的理解其含义,希望对大家有所帮助!
1.抽象方法、抽象类
-
抽象方法
-
设计规则:
-
将派生类所共有的属性和行为,抽到超类中------------抽共性
-
派生类的行为/代码都一样,设计为普通方法
若派生类的行为/代码不一样,设计为抽象方法
如:动物类的子类中每种动物同样有吃的行为但是吃的食物不一样,这时在动物类中定义吃为抽象方法,而在子类中重写自己吃的方法,实现同样是吃但吃的东西不同。
-
将部分派生类共有的行为,抽到接口,如:狗会游泳,小鸡不会,鱼会游泳,显然把游泳这个行为放在动物类中不合适,单独放在一个类中也不行,此时就把它建为一个接口,在需要这个行为的类中去实现这个接口
-
接口是对继承单根性的扩展-------- 实现多继承(表述对象具有哪些功能、短小精悍,使得类需要实现什么功能就实现什么功能,而不用担心接口的抽象方法过多而不方便实现)
-
接口就是一种标准、规范,若实现某接口意味着就具备某个功能,若不实现就意味着不具备那个功能(如:方便功能名字的统一和规范)
-
-
-
-
抽象类
-
由abstract修饰
-
包含抽象方法的类必须是抽象类
-
抽象类不能被实例化(new)(可以理解为抽象方法不完整导致抽象类不完整,不可以直接使用,所以不可以实例化)
-
抽象类是需要被继承的,派生类有两种处理方法:
-
(派生类)也声明为抽象类-----------一般很少这么做
-
必须重写所有抽象方法------变不完整为完整(常见做法)
-
-
抽象类的意义:
-
封装共有的属性和行为,实现代码复用
-
可以包含抽象方法,为所有派生类统一入口(名字统一),强制必须重写
-
-
2.接口
-
是一种引用数据类型
-
由interface定义,而不是修饰
-
只能包含抽象方法(常量、默认方法、静态方法、私有方法),
-
接口中的方法都是抽象的,不写abstract方法前面也会默认abstract
-
抽象方法不能有方法体
-
不能被实例化(接口类不完整)
-
接口是需要被实现的,实现类:必须重写接口内的所有抽象方法注意:重写的方法必须加public
-
一个类可以实现多个接口,若有继承也有实现,则先继承后实现
-
接口可以继承接口,然后实现类实现这个接口时除了实现其内的抽象方法还必须实现其接口继承的那个接口中的抽象方法
-
将部分派生类共有的行为,抽到接口,如:狗会游泳,小鸡不会,鱼会游泳,显然把游泳这个行为放在动物类中不合适,单独放在一个类中也不行,此时就把它建为一个接口,在需要这个行为的类中去实现这个接口
-
接口是对继承单根性的扩展-------- 实现多继承(表述对象具有哪些功能、短小精悍,使得类需要实现什么功能就实现什么功能,而不用担心接口的抽象方法过多而不方便实现)
-
接口就是一种标准、规范,若实现某接口意味着就具备某个功能,若不实现就意味着不具备那个功能(如:方便功能名字的统一和规范)
-
类间关系总结:
-
类和类------继承extends
-
类和接口-------实现implements
-
接口和接口------继承extends
-