Abstract抽象類的練習
阿新 • • 發佈:2018-12-20
抽象類使用練習
abstract class Animal{ //抽象父類 Animal(){ System.out.println("Animal的無參構造被呼叫"); } Animal(int i){ System.out.println("有有參構造器被呼叫"); } public abstract void eat(); //子類實現此抽象方法時,修飾符的許可權必須大於抽象類public>protected>default>private abstract void bark(); public void aaaa() { //抽象類可以有自己的非抽象方法 System.out.println("aaaaaa"); } } class Dog extends Animal{ public void eat() { System.out.println("啃骨頭"); } protected void bark(){ System.out.println("狗可以吠叫"); } } class Cat extends Animal{ //Cat類繼承Animal抽象類,必須實現抽象類中的抽象方法,同時也可以有自己的方法 public void eat() { System.out.println("吃魚"); } public void bark() { System.out.println("喵喵叫"); } public void ccc() { } public static class Test{ //靜態類只能是內部類,在外部編譯會報錯 Test(){ System.out.println("靜態內部類的無參構造被呼叫"); } } } public class Abstranct_多型的表現形式之一抽象類{ static int j = 0; int i = 0; public static void main(String args[]){ Animal a = new Cat(); //父類的引用指向子類的物件 Animal b = new Dog(); show(a); //多型的表現形式之一:抽象方法,同一個方法傳入不同的引數,表現不同的形式。另外兩個是重寫與介面 show(b); Cat.Test t = new Cat.Test(); //靜態內部類可以這樣例項化 } public static void show(Animal a) { j = 9; //靜態方法只能引用靜態變數 // i = 9; //引用非靜態變數時編譯會報錯 a.eat(); a.bark(); } }
不積跬步無以至千里