继承笔记: 1.关键词:extends public class Zi extends Fu ( 子父类的有关系,is a A是B的一种) -------------------------------------------------------------- 2. super this 访问子父类的有关系 : 生成的子类对象,访问变量是的先后关系:局部变量-》子类的成员变量this.变量名-》父类成员变量super.变量名 public class Zi extends Fu { public String name ="ithema"; public int age = 20; public void Show2(){ System.out.println("你现在调用的是子类中的Show2()"); int age = 15; System.out.println("我是局部变量age:"+age); System.out.println("我是本类成员变量age:"+this.age); System.out.println("我是本类父类中成员变量age:"+super.age); } } -------------------------------------------------------------------------------- 3.继承中构造方法的访问特点: 规则: a:子类中所有的构造方法(无参或有参)都会访问父类中的无参构造方法 理由:子类会继承父类中的数据,还有可能使用到,所以子类初始化前,父类一定要初始化 每一个子类构造方法的第一条语句默认都是:super(),可以隐藏不写, b:父类中没有无参构造方法怎么处理? 1.super(参数) ,利用super() 来调用父类中的有参构造方法 2.在父类中写一个无参构造方法 public Zi() { } (推荐方式) eg: public class Fu { //父类中没有无参构造方法 public int age ; /* public Fu() { System.out.println("父类无参构造方法被调用"); }*/ public Fu(int age) { this.age = age; System.out.println("父类有参构造方法被调用"); } } public class Zi extends Fu { public int age ; public Zi() { super(18); //调用父类中的有参构造方法来初始化父类 System.out.println("子类无参构造方法被调用"); } public Zi(int age) { super(age); //调用父类中的有参构造方法来初始化父类 this.age = age; System.out.println("子类有参构造方法被调用"+this.age); } } ---------------------------------------------------------- 4.继承中成员方法的访问特点: 生成的子类对象,访问方法时的先后关系: 子类方法中寻找》父类方法中寻找 都没找到方法 ,就报错 如果子类和父类中有相同的方法 那么在子类方法中,可以用super.方法名() 来调用 eg: public void Show(){ super.Show(); System.out.println("子类中的方法被调用"); }
---------------------------------------------------------------------------------------
5.super内存调用图