1、继承
继承:将重复代码抽取到父类中就为继承
优点:方便修改代码,减少代码量
2、如何使用继承
a、编写父类
class Pet{ 公共的属性和方法 }
b、编写子类,继承父类
class Dog extends Pet{ 子类特有的属性和方法 }
关键字:extends 继承
super 代表父类对象
一个子类只能继承一个父类
3、子类访问父类成员
a、访问构造方法:super();super(name);
使用super关键字。在子类构造方法中调用且必须是第一句
b、访问父类属性:super.name;
c、访问父类方法:super.print();
super只能出现在子类的方法和构造方法中,super不能访问父类的private成员
4、子类不是可以继承父类的所有资源
不能被继承的父类成员:a、private成员;
b、子类与父类不在同包,使用默认访问权限的成员
c、构造方法
可以被继承的包括:除了上述的三种都可以
5、protected 访问修饰符
可以修饰属性和方法,在本类、同包 、子类可以访问
系统默认的修饰符是friendly,在本类和同包中有效
从严到宽松的顺序:private--friendly--protected--public
6、多重继承关系的初始化顺序
父类的属性-->父类的构造方法-->子类的属性-->子类的构造方法
7、何时使用继承
符合 is-a关系的设计使用继承,假设有两个类A、B,他们符合A是B的一种或者B是A的一
种,就可以考虑使用继承。
继承是代码重用的一种方式,将子类的共有属性和行为放到父类中
8、继承关系
继承关系中,找不到父类的带参构造方法,默认执行父类的无参构造方法
继承父类的构造方法要用super
9、方法的重写与方法的重载:
重载(Overlode):方法名相同、参数不同、与访问修饰控制符和返回值无关 在同类中
重写(Override):方法名相同、参数相同、与访问修饰控制符和返回值有关 子类重写父类的方法
(返回值必须和父类相同或父类的子类、子类的访问修饰控制符与父类相同或者权限比父类宽松)
10、abstract
抽象类 限制实例化
可以修饰类和方法,不能修饰属性。修饰方法时,称为抽象方法,没有方法体分号结尾,抽象方法
必须在抽象类里面,抽象方法必须在子类中被实现,除非子类是抽象类。修饰类时,类就不能被实例化。
为什么用抽象代码?每个子类的要求方法不同,父类只定义方法,不定义方法体,子类对方法重写
11、final
修饰类:最终版的类,不能被其他类继承
修饰属性:变成常量,不会被修改
修饰方法 :最终版的方法,不被重写
12、条件运算符
三目运算符: 关系表达式1?表达式2:表达式3
(a>b)?a+b:a-b a>b为真执行a+b;a>b为假执行a-b。