继承:子类继承父类共有的属性和行为,但子类独有的属性和行为是父类没有的
1.实现了代码的重复使用 java中的继承是单继承的(为什么? 因为会出现调用的不确定性);
单继承:一个类只能继承另一个类
多继承:一个类可以继承多个类
2.关系:继承使类和类之间产生了父子关系 java支持多层继承(一个类可以有多个子类,但一个子类只能有一个父类) 如:
class A{}
class B extends A{}
class C extends B{}
父类中定义的是与子类共性的东西,子类可以有自己独有的东西,子类的功能更多
3.继承中成员的特点:
1)子类继承父类所有的成员变量,包括实例成员变量和静态成员变量
2)子类继承父类除构造方法以外的成员方法,包括实例成员方法和静态成员方法。通过子类对象可以调用父类的成员方法
3)子类不能继承父类的构造方法,为父类的构造方法只能用于创建父类实例并初始化,不能用于创建子类实例(子类必须声明自己的构造方法)
4)子类可以增加成员,可以重定义从父类继承来的成员,但不能删除
5)特例 子类中若出现于父类同名的成员变量时,子类中用 super.父类成员变量 来调用继承自父类的成员变量 成员方法类似也用 super 区分
6)若父类的成员(变量和方法)私有化(private),子类虽然继承了父类的成员但无权使用,此时需要调用父类公有成员 set() 与 get() 方法间接访问父类的私有成员
7)重写(覆盖):子类中出现和父类相同(方法名、参数、返回值均相同)的方法,但行为的表现方式不同(java认为子类没有必要单独定义),当创建子类对象调用重写的方法时,执行的总是重写后的方法 前提:存在继承关系
重载与重写的区别:重载是指同一个类中两个同名(参数列表不同)的方法;重写是指父类与子类之间的的同名(参数列表相同)方法
8)父类中 private 的方法不能被子类重写,子类在重写时,方法的权限要大于等于父类方法的权限
9)若父类中的方法是静态的,子类在重写时必须是静态的 static
4.继承中构造方法特点:
1)在创建子类对象时,先执行了父类的构造方法 原因是系统自动在子类的构造方的第一行加入了 super():调用父类中空参的构造方法
2)为什么 先执行父类的构造方法? 因为子类继承父类,必然会继承父类的属性,先执行父类的构造方法,可以利用父类构造方法中为属性赋值的语句
注意:父类中要写一个空参的构造方法