目录
- 1. 初始化
- 2. 关键字protected
- 3. 继承方式
- 4. 关键字 final 修饰类
- 5. 组合和继承
1. 初始化
当静态代码块、实例代码块和构造方法都出现在子类和父类,代码的初始化顺序是什么样的?
classPerson{Stringname;intage;publicPerson(Stringname,intage){this.name=name;this.age=age;System.out.println("Person(String ,int)");}static{System.out.println("Person:static{}");}{System.out.println("Person:{}");}}classPainterextendsPerson{booleanblindness;publicPainter(booleanblindness,Stringname,intage){super(name,age);this.blindness=blindness;System.out.println("Painter(boolean ,String ,int)");}static{System.out.println("Painter:static{}");}{System.out.println("Painter:{}");}}publicclassTest{publicstaticvoidmain(String[]args){Painterp=newPainter(true,"da vinci",61);}}由于三者之间的顺序是: 静态代码块 > 实例代码块 > 构造方法
①父类和子类和静态代码块先执行 —> ②父类实例代码块和构造方法 —> ③ 子类实例代码块和构造方法
注意点:
- 静态代码块最先被执行,且只执行一次。
- 实例代码块和构造方法调用几次执行几次
publicstaticvoidmain(String[]args){Painterp1=newPainter(true,"da vinci",61);System.out.println("==============================");Painterp2=newPainter(false,"NPC",20);}2. 关键字protected
| 限定访问符 | 同一类 | 同一个包 | 不同包子类 | 不同包非子类 |
|---|---|---|---|---|
| protected | ✅ | ✅ | ✅ | ❌ |
不同包子类:
在包demo:
packageDemo;publicclassTest1{protectedintage=10;}在包demo2:
packageDemo2;importDemo.Test1;publicclassTest2extendsTest1{publicvoidprint(){System.out.println(super.age);}publicstaticvoidmain(String[]args){Test2test=newTest2();test.print();}}test.print();输出结果:
3. 继承方式
Error❌:
classA{}classB{}classCextendsA,B{}⚠️:java不支持一个子类继承多个父类。
目录
- 1. 初始化
- 2. 关键字protected
- 3. 继承方式
- 4. 关键字 final 修饰类
- 5. 组合和继承
4. 关键字 final 修饰类
final修饰类 :表示被修饰类不可被继承。
Error ❌:
finalclassPerson{}classStudentextendsPerson{}5. 组合和继承
继承:表示
is - a(是一个)的关系
classPerson{}classStudentextendsPerson{}Student是Person。
组合:表示
has - a(有一个)的关系
classEngine{publicvoidstart(){System.out.println("发动机启动");}}classCar{Engineengine=newEngine();publicvoidrun(){engine.start();System.out.println("汽车行驶");}}publicclassTest{publicstaticvoidmain(String[]args){Carcar=newCar();car.run();}}Car有engine
| 继承 | 组合 | |
|---|---|---|
| 关系 | is-a | has-a |
| 关键字 | extends | 成员变量 |
| 耦合 | 高 | 低 |
| 灵活性 | 较低 | 较高 |