什么是继承
继承(lnheritance):面向对象的三大特性之一
-
定义
- 一个类获取现有的类的所有属性和行为的机制
- 创建基于现有的类的新类,可以重用现有的类的属性和方法
- 可以在新创建的子类中添加属性和方法
-
作用
- 有效的解决代码的重用问题,使代码拓展更加灵活
- 从始至终完整的体现了一个应用的系统,逻辑更加清晰
- 增加软件的可扩展性,以适用不同的业务需求
❓何时使用继承
-
继承与真实世界类拟
-
只要说“苹果树是作物”,苹果树的很多行为就不言自明了
-
富士是一种苹果树
符合 is-a关系的 设计适用继承
-
💥理解继承
-
子类可以继承父类的所有些资源吗?
-
访问修饰符: protected
- 可以修饰属性和方法
- 本类、同包、子类可以访问
-
访问修饰符总结:
访问修饰符 本类 同包 子类 其他 private ✅ 默认 ✅ ✅ protected ✅ ✅ ✅ public ✅ ✅ ✅ ✅ 理解对象创建的步骤,先创建父类,再创建子类(先会运行父类的构造方法,再运行子类的构造方法)
知识扩展:
Object类
-
是所有Java类的祖先
- 所有的java类都直接或间接地继承了Object类
-
位于Java.lang包中
-
在定义一个类时,如果没有使用extends关键字,即没有显式地继承某个类,那么这个类直接继承Object类
-
常用方法
方法 说明 toString() 返回当前一个对象本身的有关的信息,返回字符串对象 equals() 比较两个对象是否为用一个对象。若是,返回true clone() 生成当前对象的一个副本,并返回 hashCode() 返回该对象的哈希代码值 getClass() 获取当前对象所属的类信息,返回Class对象
super关键字
使用super关键字 super代表父类对象
-
子类访问父类成员
- 访问父类构造方法
语法:
在子类构造方法中调用且必须是第一句
super(参数);
实例:
public class AppleTree extends Crop{ //省略private属性定义 public AppleTree(String brand){ super(""苹果树,10,2,100);//访问直接父类的构造方法 this.brand=brand; } }
如果在子类中调用父类中被重写的方法,应该如何实现呢?
-
super关键字代表对当前对象的直接父类对象的默认引用
-
super可用于子类访问父类属性、父类方法
语法:
super.<父类属性/父类方法>;
实例:
super.print();
注意!!!
-
super关键字必须出现在子类(子类的方法和构造方法)中,而不允许在其他位置
-
使用super关键字可以访问父类的成员(属性、方法、构造方法)
-
注意访问权限的限制,如无法通过super访问private成员
方法的重写:
-
必须拥有继承关系
-
子类重写父类的同名方法,要求参数列表一模一样,访问修饰符要比父类更大,返回值一样或者是其子类