java面向对象
this的用法:
1.指向本对象中的成员变量 this.field1
2.指向本对象中的方法 this.fun(parameter)
3.可以当作构造函数使用 this(parameter)
extends关键字
extends关键字用于一个类A继承另一个类B,继承之后A将拥有B的所有public、protected、default属性和方法。
java只支持单继承,如果一个类未显示extends继承其他类,则默认继承Object类。
每个子类的构造函数中都要先调用父类的构造函数,如果不显示调用,默认调用super()(父类中必须要有一个无参的构造函数)。
每个子类的构造函数中有且仅有一个调用构造函数的super语句
抽象类
如果一个 类中某个方法没有被实现(没有方法体),那么这个类必须定义为抽象类
抽象类只能被继承,不能被实例化,并且子类需要实现抽象类中未被实现的方法,如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为抽象类
public abstract class
接口
接口中的所有方法都是默认public abstract的,定义接口使用关键字interface
接口由类来实现,通过关键字implements
接口中的方法被其他类实现的时候方法的安全级别不能降低只能提高
为了弥补java只支持单根继承的缺陷,java提供了接口,一个类可以实现多个接口
实现接口的类如果不是抽象类,那么需要实现接口中的所有方法
类型之间相互转换(多态)
java中包含两种类型之间的相互转换:
1.基本数据类型之间的相互转化:
自动转换:由低精度到高精度自动转换
强制类型转换:(数据类型 )
2.引用类型之间的相互转换
类型之间相互转换,只限制于有继承关系的类
多态:
子类可以转换成父类(向上转型),而父类不能转换成子类(向下转型)
父类转换成子类只有一种情况:
Human obj1=new Man();
Man obj2=(Man)obj1; //obj1本来就是Man类型
多态的作用:
以统一的接口操作某一个类不同对象的动态行为
对象之间解耦,
重写:
方法签名:方法名+参数列表
子类的方法覆盖父类的方法,子类的方法优先于父类的方法。子类和父类的方法签名一样。
重载:
同一个类中,方法名相同,参数不同,返回值类型可以不同。
契约设计
契约:规定了对象里面应该包含哪些方法,通过接口来实现