該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
繼承的關鍵字:extends
格式如下: class 子類名 extends父類名{
...
}
例如學生是繼承人類這一父類的.
class student extends person{
...
}
如果一個類的聲明沒有使用關鍵字extends,則這個類默認是繼承Object類的.Object是所有類的父類.Object是java.lang包中的類.
當一個子類繼承了一個父類時,子類可以調用父類中的所有方法和成員變量.子類也可以單獨自己聲明方法或者變量下面的代碼創建了4個class.分別是Dog,Cat,Animal和包含主函數的Main類.其中Dog和Cat是繼承父類Animal的.
Cat繼承Animal類:
package com.cnblogs;
public class Cat extends Animal{
//不帶參數的默認構造器
public Cat(){
//super();必須出現在構造方法的首行.//this();也如此.
super();
// super("XX",10); 該代碼表示調用父類帶參的構造器
System.out.println("Cat構造器"); }
/*publicString name;
public int age;
public void walk(){
System.out.println("Cat....walk");
}
public void sleep(){
System.out.println("Cat....sleep");
} */
//注解提示
@Override
public void how(){
System.out.println(name +" "+"Cat....miaomiao");
//super 強制調用父類的show()方法法.
//如果沒有super,show();是this.show();的默認寫法.
//步驟是:先調用子類的show()方法.子類如果沒有show方法才調用父類的show()方法
super.show();
}
public void show(){
System.out.println(name +" "+"Cat----->show");
}
}
聲明Dog類:
package com.cnblogs;
public class Dog extends Animal {
/*public String name;
public int age;
public void walk(){
System.out.println("Dog....walk");
}
public void sleep(){
System.out.println("Dog....sleep");
} */
public void how(){
System.out.println(name +" "+"Dog....wangwang"); }
瘋狂軟件Java培訓緊跟最新的Java潮流技術,國內首家講解Java 8新特征,根據企業工作中需要的開發技術,讓學員學習的課程是企業最需要的實用技術,而且也保障學員能把這些技能點學會、學好,并且瘋狂軟件教育的課程實時更新,在信息技術快速發展的情況下,可以保證學員學到更新更主流的技術。師資雄厚,教師均擁有8年以上的項目實踐經驗,瘋狂軟件Java課程是理論與實踐相結合,這樣保障了學員很好的掌握理論知識同時,也能根據理論的指導做好實際的工作。
}
創建一個Animal的父類:
package com.cnblogs;
//Animal不寫繼承就是默認繼承Object類. //抽象類不能new.傳入的是子類的實例對象.
public abstract class Animal extendsObject{
public String name;
public int age;
//默認的不帶參的構造器
public Animal(){
this("baobao",2);
//this();調用的是下面帶參的Animal的方法
System.out.println("Animal--->()");
}
//帶參的構造器.給屬性賦初始值
public Animal(String name,int age){
this.name = name;
this.age = age;
System.out.println("Animal--->(name,age)");
}
public void walk(){
System.out.println(name +"---->walk");
sleep();
how();
//this.show 調用的是子類的show()方法,如果子類沒有show()方法.在調用父類的show()方法.
this.show();
}
public void sleep(){
System.out.println(name +"---->sleep");
}
//抽象方法.
public abstract void how();
public void eat(){
System.out.println(name +"---->Eat");
}
public void play(){
System.out.println(name +"---->Play");
}
public void show(){
System.out.println(name +" "+"Animal---->show");
}
}
Main類(包含主函數):
package com.cnblogs;
public class Main{
public static void main2(String[] args) {
//生成一個cat對象
Cat cat = new Cat();
cat.name ="xiaohua";
cat.age = 3;
cat.walk();
cat.how();
//生成一個dog對象
Dog dog = new Dog();
dog.name = "xiaomei";
dog.age= 3;
dog.walk();
dog.eat();
dog.how();
//調用的是調出來的對象
Animal animal = new Cat();
animal.name = "HH";
//調用的是子類Cat()的how()方法.
animal.how();
Animal animal2 = new Dog();
animal2.name = "XX";
//調用的是子類Dog()的how方法
animal2.how();
animal.walk();
//GetMsg方法要求傳入的是子類cat,所以傳入的必須是cat,而不能是animal.
GetMsg(cat);
GetMsg(dog);
GetMsg(animal2);
}
/* public static void GetMsg(Cat cat){
cat.how();
}*/
//將子類的對象傳入給父類的引用//比上面的傳入單獨的cat靈活,一般使用下面這種方法
public static void GetMsg(Animal animal){
animal.how();
}
/** *1. new一個對象以后先調用子類Cat的第一個方法,運行super();調用父類Animal的第一個方法
*2. 父類中的構造方法執行this();方法,this方法又調用Animal帶參數的方法并輸出;在返回不帶參的構造器執行this();下面的輸出語句
*3. 在返回子類Cat中執行super();下面的語句,輸出"Cat構造器"
*4. 接著animal.how()調用new出來的對象 cat的how()方法
*5. 執行子類Cat()方法中的how()方法,并輸出.
*6. 接著在運行how()方法中的super().show;然后調用父類Animal的show()方法.并輸出相應的結果. **/
public static void main(String [] args){
Animal animal = new Cat();
animal.how(); }
}
super();調用父類的構造器,方法和屬性.
this();調用該方法的當前對象.