Java-物件導向總結

來源:互聯網
上載者:User

標籤:擴充性   方法   多個   靜態方法   ges   ret   介面繼承   程式   實值型別   

 

 

 

  下面是學習物件導向的知識點和總結:

物件導向思想:

遇到需求,首先去找是否有現成的類來實現此功能,建立對象來調用,以此來組合成新的類實現自己的需求。

在java中是以類為單位,一個類包括成員變數、成員方法和構造方法

構造方法:建立對象的時候,由jvm自動調用,其中的作用是給成員變數賦值;不能用static關鍵字來修飾構造方法。

構造方法中也有return語句,只是一般不寫;java中所有的方法中都有return語句,來進行出棧。

 

匿名對象:
public class Demo{    public void test(){}} // 利用匿名對象來調用Demo類public class TestDemo{   public static void main(String args[]){      New Demo().test();} } 

使用匿名對象的使用情境:就是這個對象只用一次,這樣的情境非常方便。

封裝:

封裝的目的就是隱藏;

為了資料安全,或者隱藏方法的內部實現過程,對外提供特有的方法進行訪問;

下面就是把成員變數隱藏起來,通過設定get,set來對資料進行設定和讀取:

 

package com.xiaoshitou.demo1;public class Person {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

 

  

繼承:

繼承:子類繼承父類的非私人的成員(成員變數和成員方法),注意:構造方法是不能被繼承的。

class A{}class B extends A{}

  

類的繼承只能是單一繼承:也就是說一個子類只可以同時繼承一個父類;

介面可以進行多重繼承:一個介面可以同時繼承多個介面

 

類可以進行多重繼承:也就是說父類可以再繼承其他的類

使用繼承的時候:子類是父類的一種特殊情況的時候才使用繼承;比如蘋果是水果的其中一種,所有可以使用蘋果類來繼承水果類;

子類中有與父類同名的成員變數和方法時,可以使用super來調用父類的成員

super只能調用直接父類的成員,不能調用父類的父類的成員

方法的重寫:

使用的情境:父類的方法不能滿足子類的需求的時候,需要進行方法重寫

子類和父類的方法一樣時,當執行的時候,調用的是子類的方法,這就叫做重寫

只有一般的方法才能重寫,構造方法是不能被重寫的

重寫的格式:

1、方法名和參數列表必須相同

2、傳回值一般要求相同,或者子類的傳回值類型是父類方法傳回值類型的子類

3、父類的方法有static修飾的時候,子類方法也必須用static修飾

4、子類方法 的許可權不能比父類方法的許可權低

子類執行個體化的過程:

JVM執行時,一旦遇到new關鍵字,就會到堆記憶體中開闢空間,得到這個空間的記憶體位址;

接下來根據類的成員,在堆中為類中成員變數分配空間,賦預設值;如果這個類有父類,則還要分配一塊空間,用於儲存父類中的成員變數;

再然後,就會調用相應的建構函式進棧執行;(也就是說,如果建立的是子類對象,此時調用的是子類的建構函式進棧);

建構函式進棧後,首先會執行一個隱式三步:

1、調用父類建構函式;(手動寫,就是super(參數列表))預設調用的都是父類無參建構函式;

2、為對象中的成員變數顯示初始化;

3、如果有構造代碼塊,執行構造代碼塊;

隱式三步都執行完畢,才開始執行建構函式中的代碼;

當建構函式中的代碼執行完畢後結束出棧,對象才算建立完成;

注意事項:

1、子類執行個體化,只會建立一個對象(就是子類對象),但是也會為父類成員變數分配空間;

2、子類建構函式執行時,會先執行父類建構函式,目的是給父類成員變數賦值;執行完父類建構函式才執行子類建構函式;

 

因為只是建立了一個子類的對象,所以如果調用的方法存在重寫的情況下,就一定調用的是子類重寫過的方法

建立子類的時候,調用父類的構造方法的原因是為了給父類的成員變數進行顯示初始化

this和super關鍵字:

 

this代表當前調用的對象,所有的非靜態成員方法和變數調用都需要依賴對象

 

this的作用:

 

1、區分局部變數和成員變數

 

2、在構造器方法中調用其他構造方法

 

在構造方法中調用其他構造方法時,必須把this(參數)放在第一行

 

super代表直接父類

 

當子類中的成員與父類同名時,可以用super來調用父類的成員

 

在子類的構造方法中可以使用super(參數)來調用父類的構造方法;如果不寫預設會調用父類的無參數構造方法。

 

this和super調用構造方法時,不能同時存在,因為兩個都必須放在第一行;當使用this來調用其他的構造方法時,是利用了間接的調用父類的構造方法

 

final關鍵字:

 

inal修飾類:該類不能被繼承

 

final修飾方法:該方法不能被重寫

 

final修飾變數:基礎資料型別 (Elementary Data Type),成為了常量,不能被改變

 

       引用資料類型,對應指向對象的地址不能改變

 

final不能修飾構造方法

 

抽象類別:

 

 

 

 

抽象類別:抽象類別不能建立對象,也就是說不能new,必須由子類來繼承

一個類繼承抽象類別繼承抽象類別,必須全部重寫抽象方法,否則該類還是抽象類別

一個類中存在抽象方法,就這個類必須聲明成抽象類別

抽象類別可以存在所有的成員(常用變數,成員方法,構造方法)

使用情境:

1、類中有抽象方法

2、不希望被建立對象

多態:

多態就是:父類的引用指向子類的對象;或者是介面的引用指向實作類別的對象

多態的使用前提:兩個類存在繼承關係,或者介面和介面實作類別的關係

好處:提高了程式的擴充性,代碼的複用性

多態編譯時間,全部看父類

多態運行時,除了存在重寫的非靜態方法,運行子類重寫的方法,其他全部運行父類的成員。

類型轉換:

向上自動轉型:多態就屬於自動向上轉型

強制向下轉型:可以先使用instanceof判斷然後再進行強制轉換,否則容易出現類型轉換異常

 

介面:

介面中只有成員變數和成員方法

成員變數預設的是:public static final

成員方法預設的是:  public abstract

這些修飾符可以寫也可以不寫,在編譯的時候會自動加上

一個介面可以同時繼承多個

一個類可以同時實現多個介面

類繼承和實現可以同時進行,但是實現介面應該放在最後

注意:

不管是一個類實現多個介面,還是介面繼承多個介面時,不能出現方法名和參數名相同,傳回值類型不同的方法

 

介面和抽象類別的使用情境:

  1. 抽象類別:兩個類存在繼承關係
  2. 介面:兩個事物不存在繼承關係,主要用來定義規則,增加功能
static關鍵字:

類載入的過程:

包package:

許可權修飾符:

內部類:

 

 

 

 

 

 

 

 

 

Java-物件導向總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.