`

继承与多态(抽象与接口)

 
阅读更多

继承:

1、java中继承是单根的(只有一个直接父类,但是不管写不写,都直接或者间接的继承了Object类)貌似java8去掉了这个特性,继承也允许多继承

2、子类继承父类的非private 方法和属性

3、子类初始化出来之前先初始化父类。

4、若子类没有显示调用父类的构造方法,则jvm默认会调用父类的无参数构造方法

5、若需要显示调用父类的构造方法则使用super()且super()必须使用在子类构造方法 的第一行。

 

super/this比较

super 对象:指代父类对象的调用

super()方法:指代父类对象的引用

this对象:指代当前对象的引用

this() 方法:指代当前类的构造方法。

 

 

多态:同一个信息不同类的不同反应(可扩展性、可维护性)

方法重写:子类里面有父类中的某个方法具有相同的方法名、返回值类型、参数列表

方法重载:同一个类中多个方法拥有相同的返回值和方法名,但是参数列表不一样。

 

关键词final与static

final永不改变的,编译时常量,一个运行时被初始化的值,而你不希望它改变。

加上final以后类:不能被继承。方法:不能被覆盖重写,不能被子类调用。变量:值不能改变只能赋值一次且不能修改。对象:只能实例化一次,对象的引用永恒不变。

 

static告诉编译器只分配一次内存地址,

类:不能使用。  

方法:静态方法不能使用this或者super,使用时用类的方法.获取,如:SUtil.up();

一般使用 public static final int AAA_BB 来定义常量。

 

 

抽象:设计过程中将自己不需要的代码或者不想看到的抽象化

抽象类:不明确提供实现细节的类,具体实现由子类完成,用来规范一系列子类的行为

接口:使用接口改变单一继承的缺点,接口定义一套规范,遵守这个规范可以实现功能,屏蔽了实现的细节,方便了多人开发。

 

接口和抽象类共同点:

1、都不能被实例化

2、都要在非抽象的子类中重写方法

 

不同点

抽象类可以写实例方法也可以写抽象方法,在非抽象类的子类中可以重写实例方法也可以不重写,只能继承一个类,可以定义成员变量

接口不管是否声明,方法前面都是 public abstract ,要在非抽象子类中全部重写,可以实现多个接口,只能定义常量。

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics