Java筆記-面向對象相關

1. 類中變量的分類this

  1)局部變量:在方法中定義的變量spa

  2)成員變量:類的屬性code

  3)類變量:靜態變量,用static修飾對象

2. 關於構造方法blog

  每一個類都有一個構造方法,沒寫的,默認有一個空的構造方法。同時,構造方法能夠重載(同名但參數列表不一樣)。繼承

3. 關於final教程

  修飾類:該類沒法被繼承接口

  修飾方法:該方法沒法被覆蓋或者說重寫(子類本身再寫一個相同的方法)作用域

  修飾屬性:常量get

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)匿名內部類:沒有名字的內部類,用於簡化代碼,只能用一次。

相關文章
相關標籤/搜索