java 面向對象的特徵(詳解):

首先闡述面向對象思想概述

概述
Java語言是一種面向對象的程序設計語言,而面向對象思想是一種程序設計思想,我們在面向對象思想的指引下,
使用Java語言去設計、開發計算機程序。 這裏的對象泛指現實中一切事物,每種事物都具備自己的屬性和行爲。面
向對象思想就是在計算機程序設計過程中,參照現實中事物,將事物的屬性特徵、行爲特徵抽象出來,描述成計算
機事件的設計思想。 它區別於面向過程思想,強調的是通過調用對象的行爲來實現功能,而不是自己一步一步的去
操作實現

什麼是類?


類:是一組相關屬性和行爲的集合。可以看成是一類事物的模板,使用事物的屬性特徵和行爲 特徵來描述該類事物。
    現實中,描述一類事物:
             屬性:就是該事物的狀態信息。
            行爲:就是該事物能夠做什麼。
           舉例:小貓
            屬性:名字、體重、年齡、顏色 行爲:走、跑、叫


什麼是對象?


對象:是一類事物的具體體現。對象是類的一個實例(對象並不是找個女朋友),必然具備該類事物的屬性和行爲.
        現實中,一類事物的一個實例:一隻小貓
     舉例:一隻小貓
      屬性:tom、5kg、2 years、yellow

      行爲:溜牆根走、蹦躂的跑、喵喵叫


類與對象的關係


類是對一類事物的描述,是抽象的。
對象是一類事物的實例,是具體的。
類是對象的模板,對象是類的實體。

 

面向對象的四大特徵

1) 繼承:繼承是從已有類得到繼承信息創建新類的過程。提供繼承信息的類被稱爲父類(超類、基類);得到繼
承信息的類被稱爲子類(派生類)。繼承讓變化中的軟件系統有了一定的延續性,同時繼承也是封裝程序中可變因素的
重要手段。
  好處
      1. 提高代碼的複用性。
      2. 類與類之間產生了關係,是多態的前提。
繼承的特點
   1. Java只支持單繼承,不支持多繼承。

   2. Java支持多層繼承(繼承體系)。

class A{}
class B extends A{}
class C extends B{}

頂層父類是Object類。所有的類默認繼承Object,作爲父類。
3. 子類和父類是一種相對的概念。


super和this解釋

父類空間優先於子類對象產生
在每次創建子類對象時,先初始化父類空間,再創建其子類對象本身。目的在於子類對象中包含了其對應的父類空
間,便可以包含其父類的成員,如果父類成員非private修飾,則子類可以隨意使用父類成員。代碼體現在子類的構
造方法調用時,一定先調用父類的構造方法。理解圖解如下:

super和this的含義
     super :代表父類的存儲空間標識(可以理解爲父親的引用)。
     this :代表當前對象的引用(誰調用就代表誰)。
super和this的用法
1. 訪問成員

this.成員變量 ‐‐ 本類的
super.成員變量 ‐‐ 父類的
this.成員方法名() ‐‐ 本類的
super.成員方法名() ‐‐ 父類的


用法演示,代碼如下:

class Animal {
    public void eat() {
        System.out.println("animal : eat");
    }
} 
class Cat extends Animal {
    public void eat() {
        System.out.println("cat : eat");
   } 
    public void eatTest() {
        this.eat(); // this 調用本類的方法
        super.eat(); // super 調用父類的方法
    }
}

public class ExtendsDemo08 {
    public static void main(String[] args) {
        Animal a = new Animal();
        a.eat();
        Cat c = new Cat();
        c.eatTest();
    }
} 

/*
輸出結果爲:
animal : eat
cat : eat
animal : eat

*/

/*

2. 訪問構造方法
this(...) ‐‐ 本類的構造方法
super(...) ‐‐ 父類的構造方法

注意:子類的每個構造方法中均有默認的super(),調用父類的空參構造。手動調用父類構造會覆蓋默認的super()。
super() 和 this() 都必須是在構造方法的第一行,所以不能同時出現。

*/


2)封裝:通常認爲封裝是把數據和操作數據的方法綁定起來,對數據的訪問只能通過已定義的接口。面向對象
的本質就是將現實世界描繪成一系列完全自治、封閉的對象。我們在類中編寫的方法就是對實現細節的一種封裝;我
們編寫一個類就是對數據和數據操作的封裝。可以說,封裝就是隱藏一切可隱藏的東西,只向外界提供最簡單的編程
接口。
 原則
    將屬性隱藏起來,若需要訪問某個屬性,提供公共方法對其訪問。

封裝的操作步驟
1. 使用 private 關鍵字來修飾成員變量。
2.對需要訪問的成員變量,提供對應的一對 getXxx 方法 、 setXxx 方法。

 

 


3) 多態性:多態性是指允許不同子類型的對象對同一消息作出不同的響應。簡單的說就是用同樣的對象引用調
用同樣的方法但是做了不同的事情。多態性分爲編譯時的多態性和運行時的多態性。如果將對象的方法視爲對象向外
界提供的服務,那麼運行時的多態性可以解釋爲:當 A 系統訪問 B 系統提供的服務時, B 系統有多種提供服務的方式,
但一切對 A 系統來說都是透明的。方法重載(overload)實現的是編譯時的多態性(也稱爲前綁定),而方法重寫
(override)實現的是運行時的多態性(也稱爲後綁定)。運行時的多態是面向對象最精髓的東西,要實現多態需要做
兩件事: 1. 方法重寫(子類繼承父類並重寫父類中已有的或抽象的方法); 2. 對象造型(用父類型引用引用子類型對
象,這樣同樣的引用調用同樣的方法就會根據子類對象的不同而表現出不同的行爲)。


4) 抽象:抽象是將一類對象的共同特徵總結出來構造類的過程,包括數據抽象和行爲抽象兩方面。抽象只關注對
象有哪些屬性和行爲,並不關注這些行爲的細節是什麼。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章