继承 extends
public class 子类 extends 父类;
子类自动拥有父类的可继承的成员变量和成员方法;
继承的好处:
1、继承的出现提高了代码的复用性,提高软件开发效率。
2、继承的出现让类与类之间产生了关系,提供了多态的前提。
类的继承只允许单继承,即一个子类只能继承一个父类。
但是允许多层继承,父类的成员变量和成员方法会一直继承下去。
方法的重写
子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为override重写、复写或者覆盖
重写需要注意的细节问题:
l 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。
l 写法上稍微注意:必须一模一样:方法的返回值类型 方法名 参数列表都要一样。
总结:当一个类是另一个类中的一种时,可以通过继承,来继承属性与功能。如果父类具备的功能内容需要子类特殊定义时,进行方法重写。
抽象类 abstract
抽象类的定义格式
public abstract 返回值类型 方法名(参数);
抽象类的特点
1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。
2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。
3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。
之所以继承抽象类,更多的是在思想,是面对共性类型操作会更简单。
1、抽象类一定是个父类?
是的,因为不断抽取而来的。
2、抽象类中是否可以不定义抽象方法。
是可以的,那这个抽象类的存在到底有什么意义呢?不让该类创建对象,方法可以直接让子类去使用
3、抽象关键字abstract不可以和哪些关键字共存?
l 1、private:私有的方法子类是无法继承到的,也不存在覆盖,而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private修饰子类根本无法得到父类这个方法。互相矛盾。
l 2、final,太监方法,无法被继承
l 3、static,静态方法,可以通过类名。方法名直接调用,抽象方法调用没有意义。
封装
封装就是隐藏实现细节,提供公共的方法
n 1、方法就是一个最基本封装体。
n 2、类其实也是一个封装体。
l 从以上两点得出结论,封装的好处:
n 1、提高了代码的复用性。
n 2、隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念。
n 3、提高了安全性。