1. 程式人生 > >抽象類和非抽象類方法執行順序例子

抽象類和非抽象類方法執行順序例子

//抽象例子

abstract class Fruit {

static{ System.out.println("例項化父類1");}
       protected Fruit(){
        System.out.println("例項化父類");
        toPlant();
        toEat();
    }
    protected  void toEat(){};
    abstract protected  void toPlant();//抽象方法沒有主體
}
class Banana extends Fruit{
//覆寫
    protected Banana(){
        System.out.println("例項化子類 Banana");


    }
    @Override
    protected void toEat() {
        System.out.println("Eat a Banana");
    }
    @Override
    protected void toPlant() {
        System.out.println("Plant a Banana");
    }
}
 class Orange  extends Fruit{
     static{ System.out.println("例項化子類2");}
    public Orange() {
        System.out.println("例項化子類 Orange");
    }
    protected void toEat() {
        System.out.println("Eat a Orange");
    }
    protected void toPlant() {
        System.out.println("Plant a Orange");
    }
}
public class TestFruit {
    public static void main(String[] args) {
        new Banana();
        new Orange();
    }

}

//非抽象例子

  class Fruit {
static{ System.out.println("例項化父類1");}
        protected Fruit(){
        System.out.println("例項化父類");
        toPlant();
        toEat();
    }
    protected  void toEat(){};


    protected  void toPlant(){System.out.println("例項化父類Plant");};


}
class Banana extends Fruit{
//覆寫
    protected Banana(){
        System.out.println("例項化子類 Banana");


    }
    @Override
    protected void toEat() {
        System.out.println("Eat a Banana");
    }
    @Override
    protected void toPlant() {
        System.out.println("Plant a Banana");
    }
}
 class Orange  extends Fruit{
     static{ System.out.println("例項化子類2");}
    public Orange() {
        System.out.println("例項化子類 Orange");
    }
    protected void toEat() {
        System.out.println("Eat a Orange");
    }
    protected void toPlant() {
        System.out.println("Plant a Orange");
    }
}
public class TestFruit {
    public static void main(String[] args) {
new Fruit();
        new Banana();
        new Orange();
    }
}

相關推薦

抽象抽象方法執行順序例子

//抽象例子 abstract class Fruit { static{ System.out.println("例項化父類1");}        protected Fruit(){         System.out.println("例項化父類");      

靜態靜態

com 變量 保存 結束 賦值 .cn 實例化 數據 空間 上次在http://www.cnblogs.com/hanshuai0921/p/7059237.html說到靜態函數和變量是保存到內存中,所以不用實例化,直接用類名::就可以調用,知道程序結束才會釋放內存. 在編

中靜態方法靜態變數,靜態程式碼塊,構造方法,以及被@PostConstruct修飾的方法執行順序

第一種:當直接呼叫(沒有new物件)靜態方法時候:程式碼塊(靜態變數按照順序)就執行—–方法執行。 第二種建立物件:執行父類靜態程式碼—-執行子類的靜態程式碼—-執行父類構造方法—–執行子類的構造

java-抽象繼承抽象

抽象類和繼承抽象類 抽象類不能直接例項化,需要建立一個指向自己的物件引用(其子類)來例項化 程式碼: public class Main { public static void main(String[] args) {

java之多執行緒中ThreadRunnable介面使用方法

java提供了兩種執行緒方式,一種是繼承java.lang包下的Thread類,覆寫Thread類的run()方法,在run()方法中實現執行線上程上的程式碼!第二種是實現Runnable介面建立多執行

JFinal 配置 方法執行順序

處理器 模板引擎 jfinal 擴展 ant 數據 void route intercept 1、public void configConstant(Constants me) 常量配置方法,一般 在裏面 讀取 配置文件 2、public void configRoute

封裝封裝類比較相同不intInteger

com margin idt val image 相同 -1 img wid A.所有和int(非封裝類比較的,只要數值相同就行) B.io3由valueof弄出來的,所以和io1相同 C.io4是new出來的,所以地址不一樣,就不相同 D.和A相同封裝類和非封裝類比較相

Java 子構造方法執行順序

1 public class Test { 2 class Super { 3 int flag = 1; 4 5 Super() { 6 test(); 7 } 8 9 void te

靜態靜態

靜態和非靜態:區別:靜態類與非靜態類的重要區別在於靜態類不能例項化,也就是說不能使用new關鍵字建立靜態類型別的變數。在宣告一個類時使用static關鍵字,具有兩個方面的意義:首先,它防止程式設計師寫程式碼來例項化該靜態類;其次:它防止在類的內部宣告任何例項欄位或方法。 特點:1.靜態類中只能包含靜態成員2

人家的Python資料庫連線sql語句拼接方法

原文出處: sql拼接方法 # encoding=utf-8 from django.http import HttpResponse from anyjson import serialize from django.http import HttpRespon

Java Http請求工具接收請求的方法

表面現像上面看看GET和POST的區別: 1.GET請求的資料會附在URL之後(就是把資料放置在HTTP協議頭中),以?分割URL和傳輸資料,引數之間以&相連,如:login.action?name=hyddd&password=idontknow&

自己寫的Python資料庫連線sql語句拼接方法

這個工具類十分簡單和簡潔。 sql拼接方法 # encoding=utf-8 from django.http import HttpResponse from anyjson import serialize from django.http import HttpRespo

A繼承父B, A a = new A(); 則父B建構函式、父B靜態程式碼塊、父B靜態程式碼塊、子A建構函式、子A靜態程式碼塊、子A靜態程式碼塊 執行的先後順序是?

(1)子類A繼承父類B, A a = new A(); 則: 父類B靜態程式碼塊->子類A靜態程式碼塊->父類B非靜態程式碼塊->父類B建構函式->子類A非靜態程式碼塊->子類A建構函式 (2)若子類建構函式中顯式的呼叫了父類

Java用物件,構造方法來實現超市管理系統

1.用自己的思維模式構建了2個類(User類和Account類)來實現。 2.根據馮經理的思維多建立了幾個方法(login(),initDate(),search(),delete(),),發現把很多功能模組寫成方法會使程式可讀性更強 • 遇到的問題和解決方案; 問題:

Java 動態生成例項, 並注入方法

Java官方支援的, 必須要有接口才行 import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; i

python 物件 (屬性,方法,靜態方法,例項屬性,例項方法

類:類是抽象的,在使用的時候通常會找到這個類的一個具體的存在,使用這個具體的存在。一個類可以找到多個物件物件: 某一個具體事物的存在,在現實世界中可以是看的到摸得著的。 可以直接使用類與物件的關係: 類就是建立物件的模板類的構成:                1.類的名稱:

python中為例項動態增加方法

>>> def func(a,b): ...     print a,b ...   >>> class Foo(object): ...     pass ...      >>> foo = Foo()

索引索引

為什麼要給表加上主鍵? 為什麼加索引後會使查詢變快? 為什麼加索引後會使寫入、修改、刪除變慢? 什麼情況下要同時在兩個欄位上建索引? 聚集索引和非聚集索引的根本區別是表記錄的排列順序和與索引的排列順序是否一致, 聚集索引儲存記錄是物

載入順序,JVM角度分析理解,構造器方法以及例項構造器方法執行順序

今天先來分析一下經常遇到的一個問題,在筆試面試中可能會經常遇見,類中欄位程式碼塊的載入順序等,從jvm角度分析一下這個問題。我們先來看下知識點,接下來進行程式碼實踐驗證。 <clinit>,類構造器方法,在jvm第一次載入class檔案時呼叫,因為是類級別的,所

Spring ——獲取IOC容器時,構造方法、set方法方法執行順序

contex config bean bubuko true src tex pro 清晰 1,首先,我們在ApplicationContext.xml中會寫下下面類的標示: <bean id="helloword" class="com.xt.fristsprin