继承、super、this
1 /** 2 * 继承 :就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 3 * 访问父类中的非私有的属性和行为 4 * */ 5 6 /** 7 * class 父类 { 8 * ... 9 * } 10 * class 子类 extends 父类 { 11 * ... 12 * } 13 * */
1 public class Employee { 2 3 String name; 4 5 public void work(){ 6 System.out.println("加班加成煞笔"); 7 } 8 } 9 10 11 public class Teacher extends Employee { 12 13 public void printName(){ 14 System.out.println("name" + name); 15 } 16 } 17 18 19 public static void main(String[] args) { 20 21 Teacher t = new Teacher(); 22 t.name = "弱鸡"; 23 t.printName(); 24 t.work(); 25 }
1 public class Fu 2 { 3 int num = 5; 4 int num2 = 6; 5 } 6 7 8 public class Zi extends Fu { 9 10 int num = 6; 11 /** 12 * 子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,修饰 13 * 父类成员变量,类似于之前学过的 this 14 * */ 15 public void show(){ 16 System.out.println("Fu num" + super.num); 17 System.out.println("Zi num" + this.num); 18 } 19 } 20 21 22 public static void main(String[] args) { 23 Zi z = new Zi(); 24 z.show(); 25 }
1 /** 2 * 成员方法重名 ——重写(Override) 3 * 如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写 (Override)。 4 * 方法重写 :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效 5 * 果,也称为重写或者复写。声明不变,重新实现 6 * */
1 /** 2 * 1. 构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。 3 * 2. 构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构 4 * 造方法中默认有一个 super() ,表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用。代 5 * 码如下: 6 * */ 7 8 9 10 public class Fu { 11 12 private int n; 13 14 public Fu() { 15 System.out.println("FU()"); 16 } 17 } 18 19 20 21 public class Zi extends Fu{ 22 23 public Zi() { 24 super(); 25 System.out.println("Zi"); 26 } 27 } 28 29 30 public static void main(String[] args) { 31 Zi z = new Zi(); 32 }
1 /** 2 * super和this的含义 3 * super :代表父类的存储空间标识(可以理解为父亲的引用)。 4 * this :代表当前对象的引用(谁调用就代表谁)。
5 * Java只支持单继承,不支持多继承。 6 * */