继承相关知识
继承的基本语法
class 子类 extends 父类{
}
1.子类就会自动拥有父类定义的属性和方法
2.父类又叫超类,基类
3.子类又叫派生类
继承的注意事项与细节问题
1.子类继承了父类所有的属性和方法,但是私有属性和方法不能在子类直接访问,要通过父类公共方法区访问
父类
1 package com.test; 2 3 public class Father {//父类 4 //四个属性 5 private int n1=100; 6 private int n2= 20; 7 int n3 = 50; 8 private int n4=60;//私有的,不能被直接访问,需要通过创建一个公共方法,可以间接被访问 9 //创建构造器 10 public Father(){ 11 System.out.println("Father()...."); 12 } 13 //n4创建一个公共方法, 14 public int getN4(){ 15 return n4; 16 } 17 //创建4个方法 18 public void test1(){//公共的方法,可以直接被子类访问; 19 System.out.println("test1"); 20 } 21 public void test2(){ 22 System.out.println("test2"); 23 } 24 public void test3(){ 25 System.out.println("test3"); 26 } 27 private void test4(){//私有的方法,不能被子类直接访问 28 System.out.println("test4"); 29 } 30 public void Fix(){//私有的方法,不能被子类直接访问,但可以通过公共方法间接访问 31 test4(); 32 } 33 }
子类;
1 package com.test; 2 3 public class Son extends Father {//子类继承父类 4 public Son(){ 5 System.out.println("Son()..."); 6 } 7 public void use(){ 8 //子类继承了所有的属性和方法,但是私有属性和方法不能在子类直接访问 9 // System.out.println(n1+n2+n3+n4);//n1,n2,n4是私有的,所以不能直接访问 10 test1(); 11 // test4();//test4是私有的,所以不能直接访问 12 test2(); 13 Fix();//通过公共的fix方法,访问test4 14 //通过父类提供的间接公共方法去访问 15 System.out.println("n4="+getN4()); 16 17 } 18 19 }
2.子类必须调用父类的构造器,完成父类的初始化
3.当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用
super去指定使用父类的哪个构造器完成对父类的初始化工作,否则编译不会通过。
4.如果希望指定去调用父类的某个构造器,则显式的调用一下;(可以在子类中的构造器中使用super()去指定父类中相应的构造器(形参里面写父类构造器中相对应的实参);或者什么都不写)
5.super在使用时,必须放在构造器的第一行(只能在构造器中使用)
6.super()和this()都只能放在构造器的第一行,因此这两个方法不能共存在一个构造器里面
7.java所有类都是Object类的子类
8.父类构造器的调用不限于直接父类,将一直往上追溯到Object类
9.java子类最多只能继承一个父类(指直接继承)即java是单继承机制
思考如何让A类继承B类和c类
10.不能滥用继承,子类和父类之间必须满足is-a的逻辑关系
想多了都是问题,做多了才是答案

浙公网安备 33010602011771号