1,繼承定義以及基本使用
定義:子類能夠繼承父類的屬性和方法;
注意點:Java中只支持單繼承; 私有方法不能繼承;
package com.xuyigang1234.chp02.extend; /** * 定義一個Animal類 * */ public class Animal { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void sys() { System.out.println("我是一個動物,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"歲。"); } }
package com.xuyigang1234.chp02.extend; /** * 定義Dog類,繼承自Animal類 * * 繼承的關鍵字為 extends * */ public class Dog extends Animal { public static void main(String[] args) { Dog dog=new Dog(); dog.setName("小白"); dog.setAge(1); dog.sys(); } }
實際上把父類Animal的共有方法get set以及say()方法都繼承了;
輸出:
我是一個動物,我的名字是:小白,我的只有1歲。
2、方法重寫
所謂方法的重寫 我們可以在子類中根據實際業務把父類的方法重寫;
package com.xuyigang1234.chp02.extend; /** * 定義Dog類,繼承自Animal類 * * 繼承的關鍵字為 extends * */ public class Dog extends Animal { /** * 方法重寫 * */ public void sys() { System.out.println("我是一只小狗,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"歲。"); } public static void main(String[] args) { Dog dog=new Dog(); dog.setName("小白"); dog.setAge(1); dog.sys(); } }
輸出:
我是一只小狗,我的名字是:小白,我的只有1歲。
3,對象實例過程以及super關鍵字
對象實例化 先實例化調用父類構造方法,再調用子類實例化構造方法;
super關鍵主要是調用父類方法或者屬性;
package com.xuyigang1234.chp02.extend; /** * 定義一個Animal類 * */ public class Animal { private String name; private int age; public Animal() { System.out.println("無參父類構造方法"); } public Animal(String name, int age) { System.out.println("有參父類構造方法"); this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void sys() { System.out.println("我是一個動物,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"歲。"); } }
package com.xuyigang1234.chp02.extend; /** * 定義Dog類,繼承自Animal類 * * 繼承的關鍵字為 extends * */ public class Dog extends Animal { private String maofa; public String getMaofa() { return maofa; } public void setMaofa(String maofa) { this.maofa = maofa; } public Dog() { System.out.println("無參子類構造方法"); } public Dog(String name,int age,String maofa) { super(name,age); //調用父類的構造方法 this.maofa=maofa; System.out.println("有參子類構造方法"); } /** * 方法重寫 * */ public void sys() { System.out.println("我是一只小狗,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"歲,有"+this.getMaofa()+"的毛發。"); } public static void main(String[] args) { Dog dog=new Dog("小白",1,"白色"); // dog.setName("小白"); // dog.setAge(1); dog.sys(); } }
輸出:
有參父類構造方法
有參子類構造方法
我是一只小狗,我的名字是:小白,我的只有1歲,有白色的毛發。