程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java中面向對象的一些知識(二),java面向對象知識

java中面向對象的一些知識(二),java面向對象知識

編輯:JAVA綜合教程

java中面向對象的一些知識(二),java面向對象知識


一. 封裝的講解

什麼是封裝?為什麼要封裝?怎麼實現封裝?

封裝的目的是為了提高程序的安全性。封裝就是把不想讓第三者看的屬性,方法隱藏起來。

封裝的實現方法是: 1.修改屬性的可見性,限制訪問。

          2.設置屬性的讀取方法。

          3.在讀取屬性的方法中,添加堆屬性讀取的限制。

package com.chen.test;

public class Test9 {
    private int age; // 定義年齡
    private String name; // 定義姓名
    private double price; // 定義價格

    //用get/set方法對屬性進行封裝
    public int getAge() {
        return age;
    } 

    //在傳入年齡時,設置了年齡的限制
    public void setAge(int age) {        
        if (age > 100 || age < 0) {    
            this.age = 18;
        }
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}

 封裝的幾個關鍵字總結:

   private :  只能被類自身調用

  public  :      1. 可以被類自身中的方法調用。 2. 可以在子類中直接調用父類的public屬性和方法。3. 可以被對象直接調用。

  protected:   1.可以被類自身的方法調用。    2.可以在子類直接調用父類的protected屬性和方法。

  默認關鍵字: 1. 可以在子類直接調用父類的默認關鍵字修飾的屬性和方法。 2. 可以被本包的對象直接調用。

 關鍵字的比較,從三個角度去對比:子類,包內,包外。

    protected關鍵字的設計的初衷就是為了子類調用父類的屬性和方法設計的。

  默認關鍵字設計的初衷是為了包內可以調用,包外不可以調用。

 

二. 繼承

 JAVA的繼承是 單線繼承,不允許多重繼承;  

  子類可以繼承父類的哪些方法和屬性:
      1.父類的private屬性和方法,無法繼承
      2.父類的protected屬性和方法,都可以繼承
      3.父類的public屬性和方法,都可以繼承
      4.父類的默認關鍵字修飾的屬性和方法,如果子類和父類在一個包裡,則可以繼承

抽象類與抽象方法:
    不能夠被實例化的class,用abstract進行修飾,這就是抽象類。
    抽象類中可以寫抽象方法、還可以寫非抽象方法----------------非抽象類中不能定義抽象方法;
    抽象類中定義的抽象,必須要在子類中被重寫------子類必須重寫父類的抽象方法(除非子類也是抽象類)
抽象方法的作用?
   子類必須重寫父類的抽象方法,可以實現多態;
final關鍵字的總結:
    1. final修飾變量     -----  給變量一次初始化的機會,以後就不能再修改
            public final double dburl;     

       final修飾引用型變量 -------------------鎖定了引用的地址,不能再發生變化;
           final Dog dog = new Dog("歡歡");
           dog = null;

    2. final修飾class   ----- 這個class不能被子類繼承
             public final class Dog extends Pet{}

    3. final修飾方法  ------ 表示這個方法不能被子類重寫
             public final void swim(Pool pool) {}

重寫:override
      子類有一個與父類,同名、同參、同返回值的方法,那麼就說子類的這個方法重寫了父類的同名方法;

重寫了什麼?
    方法的本質------>>> 是函數指針  
    重寫的本質就是:用子類內存區中方法的首地址,替換父類內存區中同名方法的首地址

 接口與抽象類的對比
    1. 接口是能力的表示
       抽象類是Class,它有屬性和行為

    2. 接口裡可以定義常量,但是沒有屬性

    3. 接口中的方法,都是public abstract (共有的抽象方法,不能定義其它類型的方法)

    4. 抽象類中的方法,可以是抽象的,也可以是非抽象的。但是接口中必須是抽象的;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved