抽象类&接口

抽象类和抽象接口

抽象类是把相同的但不确定的东西提取出来,并要求在其子类中实现中

(例如,定义了“动物”父类,其中“动物名称”和“动物年龄”属性已经明确了,但是“动物叫”的方法没有明确,此时就可以将“动物叫”定义为抽象方法。)

 

用abstract修饰的类,即抽象类;用abstract修饰的方法,即抽象方法(抽象类 abstract class XXX; 抽象方法: abstract void xxx();  // 抽象方法没有主体)

抽象类可以有非抽象方法,非抽象属性,但是抽象方法必须在抽象类里

抽象类不能被实例化,因为存在方法为被具体化, 抽象方法必须是public类型(默认都是public)

(抽象类意义:进行子类行为约束,种类管理)

 

接口类

接口是一种特殊的抽象类,其只包含常量和方法的定义,没有变量和方法的实现 

接口设计的目的是为了不让类受限于单一继承的关系,而可以灵活的同时继承一些共有的特性,从而达到多重继承的目的。

 

实现一个接口就得实现接口中所有的方法;

接口中的方法都是抽象的;

多个无关的类可以实现同一个接口,一个类也可以实现多个无关的接口。

 

抽象类和接口差异

相同:

1、都能被继承

2、继承的类都必须将未实现的函数实现

3、只关注方法的定义,不关注方法的实现

4、都不能被实例化

 

差异:

1、一个子类可以继承多个接口,但是只能继承一个父类

2、接口只能包含常量和抽象方法

 

继承

抽象类(接口)被对象引用后,只能访问抽象类的属性和方法,不能访问抽象类没有的属性和方法;

 

如果抽象类和子类同时拥有相同的属性和方法,则抽象类的引用返回接口的属性;子类的实例返回子类的属性;抽象类和子类的实例都返回子类的方法

 

 参考:

https://www.cnblogs.com/ibelieve618/p/6410910.html

https://baijiahao.baidu.com/s?id=1638387734156060633&wfr=spider&for=pc

https://www.cnblogs.com/zcscnn/p/7743507.html

 

posted on 2019-11-13 22:04  wangsong412  阅读(153)  评论(0编辑  收藏  举报