1. 程式人生 > 實用技巧 >Java筆記-面向物件相關

Java筆記-面向物件相關

1. 類中變數的分類

  1)區域性變數:在方法中定義的變數

  2)成員變數:類的屬性

  3)類變數:靜態變數,用static修飾

2. 關於構造方法

  每個類都有一個構造方法,沒寫的,預設有一個空的構造方法。同時,構造方法可以過載(同名但引數列表不同)。

3. 關於final

  修飾類:該類無法被繼承

  修飾方法:該方法無法被覆蓋或者說重寫(子類自己再寫一個相同的方法)

  修飾屬性:常量

4. 引用和物件例項

  【類名】【物件名】 = new 【類名】();

  其中,“【類名】【物件名】”只是建立了一個物件的引用,而“new 【類名】();” 才是在堆區中建立了物件。所以,

Object o1 = new Object();
Object o2 = o1; // 只是起了一個別名

  以上操作並不會建立連個物件,而是兩個引用指向了同一個物件。

5. 許可權修飾符

許可權 本類 同包 子類 其他
private
預設
protected
public

  利用許可權封裝:先將屬性用private修飾,然後使用建立相應的get和set方法。

6. 關於this

  避免由於和成員變數重名而發生的衝突。

public class DemoClass {
    privated 
int x = 1; public void setX(int x) { this.x = x; } }

7. 關於繼承

  使用關鍵字extends父類,可以使用除privated外父類所有的屬性和方法,同時子類還可以重寫父類的方法。Java中的繼承方式是單繼承,同時引入介面interface彌補單繼承的不足之處。

8. 關於super

  1)訪問父類的方法和屬性時加用“super.XXX”;

  2)呼叫父類的構造方法時,在子類的第一行新增“super()”方法。

9. 關於過載和重寫

  1)過載:同一個類中,方法名相同,但是引數列表相同;

  2)重寫:子類繼承父類時,寫一個和父類完全相同的方法,呼叫時,優先使用子類自己定義的方法。

10. 向上轉型和向下轉型

  1)向上轉型:父類物件引用指向子類物件,該引用不能訪問子類獨有的屬性和方法,同時優先訪問子類重寫過的方法;

  2)向下轉型:建立一個子類的物件引用,並指向向上轉型過的物件。

// 《菜鳥教程》的一個例項
public
class Test { public static void main(String[] args) { show(new Cat()); // 以 Cat 物件呼叫 show 方法 show(new Dog()); // 以 Dog 物件呼叫 show 方法 Animal a = new Cat(); // 向上轉型 a.eat(); // 呼叫的是 Cat 的 eat Cat c = (Cat)a; // 向下轉型 c.work(); // 呼叫的是 Cat 的 work } public static void show(Animal a) { a.eat(); // 型別判斷 if (a instanceof Cat) { // 貓做的事情 Cat c = (Cat)a; c.work(); } else if (a instanceof Dog) { // 狗做的事情 Dog c = (Dog)a; c.work(); } } } abstract class Animal { abstract void eat(); } class Cat extends Animal { public void eat() { System.out.println("吃魚"); } public void work() { System.out.println("抓老鼠"); } } class Dog extends Animal { public void eat() { System.out.println("吃骨頭"); } public void work() { System.out.println("看家"); } }

11. 抽象類

   1)用關鍵字abstract修飾抽象方法和和抽象名;

   2)抽象類可以包含普通方法,可以不包含抽象方法,但有抽象方法的一定是抽象類。

public abstract Demo{
   public abstract void fun(){
   }   
}

12. 關於介面

  1) 不能用於例項化物件;

  2) 介面中的方法有抽象方法(可以不加abstract修飾符,預設就是抽象方法)、default方法(加default修飾符,相當於類中的普通方法)和靜態方法(呼叫時使用“【類名】.【方法名】”);

  3) 成員變數是static final型別;

  4)一個介面可以繼承多個介面,一個類也可以使用多個介面。

13. 關於內部類

  1)成員內部類:相當於一種特殊的成員變數;可以直接訪問外部類的屬性和方法,反之不行,遇到屬性和方法相同時,優先用自己的,也可以藉助this用外部的;無法擁有static屬性和方法;

  2)靜態成員類(巢狀類):成員內部類用static修飾;

  3)區域性內部類:定義在方法和作用域內的內部類;

  4)匿名內部類:沒有名字的內部類,用於簡化程式碼,只能用一次。