1. 程式人生 > >static final 抽象類 介面

static final 抽象類 介面

靜態 static

靜態方法中呼叫的特點
1 在靜態方法中只能呼叫靜態方法
2 在靜態方法總只能呼叫靜態變數
非靜態方法中呼叫的特點
可以呼叫靜態和非靜態

注意許可權修飾符問題
當一個方法是靜態方法的時候 私有化不可以
可以直接通過類名呼叫
當一個屬性是靜態的時候 (跨包 預設) 不可以
可以直接通過類名呼叫
被靜態所修飾的成員 優先於物件存在

被靜態所修飾的成員被所有成員共享
飲水機 靜態
水杯 非靜態

歸屬問題
被靜態所修飾的成員 屬於類不屬於物件
成員歸類所有
不被靜態修飾的成員 屬於物件
成員歸物件所有

使用 static 的注意事項
1.在static 中沒有this關鍵字
this相當於一個類的物件`
2.在靜態方法中只能呼叫靜態成員
被靜態所修飾的屬性和方法 就不是成員變數和成員方法了
而是類屬性 類方法

有了靜態之後 載入的順序(初始化順序)
類>靜態屬性>靜態方法>物件>非靜態屬性>非靜態方法
靜態變數>靜態程式碼塊>靜態方法

靜態變數和非的區別
1.所屬不同
靜態變數 屬於類
非 物件
2.載入時間不同
靜 隨著類的載入而載入
非 隨著物件的建立而載入
3.呼叫不同
靜 通過類名呼叫 也可以物件呼叫
非 只能物件呼叫
4.儲存位置不同
靜 靜態區
非 在記憶體

靜態程式碼塊

static{
  System.ou.print("hello");
}

在靜態變數載入之後執行 在呼叫靜態方法之前之情
靜態變數 >靜態程式碼塊>靜態方法

常量

自然常量
10 “hello” ‘a’
自定義常量
被 final 所修飾的變數 稱之為常量

final
可以用來修飾類 方法 變數
1.修飾類
最終類 到此結束 不會有子類 不能被繼承
2.方法類
不可以重寫
3.變數類
不能重新賦值
如果修飾的是引用型別 不可以改變引用地址
如果修飾IDE是基本資料型別 則不能改的是值

抽象類

什麼是抽象
類本身就是抽象的概念

狗一定是動物 動物不一定是狗
在java中父類的一些屬性和方法是需要在子類中重寫的,針對於這種子類需要重寫而父類不用具體實現的方法 稱之為 抽象方法

抽象方法 沒有方法體,需要對抽象的關鍵字進行修飾 abstract
抽象方法在定義的時候 所在的類必須是抽象類
public abstract class Animal

抽象類一定有抽象方法嗎? 不一定
如果一個類的父類是抽象類,父類中有抽象方法
1.子類如果是普通類則必須重寫父類的抽象方法
2.子類如果是抽象類則可以不重寫
父類沒有抽象方法則正常繼承

如果一個類是抽象類則不可以建立物件

抽象類可以建立構造方法:
但是構造方法不是給抽象類用的,是給子類初始化父類屬性用的;
如果必須使用父類(抽象類)物件,物件可以用多型實現。

抽象類中可以存在抽象方法和普通方法。

抽象類建立:
建立一個抽象類 abstract class
變數 沒有特殊要求
構造 可以有,是給子類用的
方法 抽象和普通

抽象類的使用:
1.不可以建立物件
2.可以被繼承
如果子類是普通類,必須重寫抽象方法
如果子類是抽象類 ,可以重寫可以不
如果子類是抽象類,則需要建立子類的子類
如果抽象類的子類也是抽象類並且重寫了父類的抽象方法,則子類的子類可以不用重寫(抽象方法最少重寫一次)

抽象類的一些小問題:
1.一個類如果是抽象類,可不可以不寫抽象方法,如果寫,意義是什麼
可以。意義是不可建立物件
2.abstract 不可以和那些關鍵字使用
private
final (包括類和方法)
final修飾類 不能被繼承 但是抽象類一定要被繼承
final修飾方法 不能別重寫 但是抽象類一定要被重寫
static 抽象方法沒有方法體 一個沒有方法的方法體 呼叫沒有意義

介面
什麼是介面:對一個事物的擴充套件

在程式中介面怎麼寫:事物是可以通過介面來擴充套件的,在程式中通過類來描寫事物
繼承 多型 可以理解為造一個升級版
介面:修改原本的,改裝

用一句來描述介面:介面可以理解為一種特殊的抽象類,在介面中只有抽象方法。
介面也沒有辦法建立自己的物件,介面沒有構造方法

介面的建立:
介面的語法結構 public interface 介面名{抽象方法();}
實現類的命名要求:
如果此類中有其他的功能和作用則沒有要求;如果只是實現介面中的方法命名要求為 介面名Impl

一個類如何實現介面 ,語法如下:
public class 類名 implements 介面名{}
存在繼承關係 public class 類名 extends 父類名 implements 介面名{}
實現多個介面 public class 類名 implements 介面1 介面2{}
一個類是抽象類 public abstract class 類名 implements 介面名{}

介面的實現類如何使用
可以直接建立類的物件;也可以使用多型建立介面的物件。

多型的使用
普通類 基本不用
抽象類 偶爾
介面 經常

介面中有什麼結構
成員變數 只有靜態常量
構造方法 沒有
成員方法 抽象方法

介面和類的關係:
實現關係 類實現介面
一個類可以實現多個介面
如果介面的實現類是普通類,則必須實現介面的所有方法;
如果幾口的實現類是抽象類,則不必,如果想使用此類,則必須建立此類的子類,實現介面中的抽象方法和抽象類的抽象方法

介面和介面的關係:繼承關係,可以單可以多 like-a。