/* public String 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.VEVb;
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"); }
}
創建一個Animal的父類:
package com.VEVb;
//Animal不寫繼承就是默認繼承Object類. //抽象類不能new.傳入的是子類的實例對象.
public abstract class Animal extends Object{
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.VEVb;
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();調用該方法的當前對象.
今天博客園居然不能插入代碼塊,不知道出什么問題只能自己手寫,寫了半天.看的頭都暈了.