Java學習筆記8(物件導向一),java學習筆記

來源:互聯網
上載者:User

Java學習筆記8(物件導向一),java學習筆記

面向過程的思想:遇到問題,想,我該怎麼解決這個問題?然後一步一步解決

物件導向的思想:遇到一件事的時候,思考,我該讓誰來做,至於他怎樣去做,不是我需要考慮的事情,只要最後做好就行

 

實際舉例:我們要組裝一台新電腦

面向過程:我們上網查詢各種硬體參數性價比,去商城觀察詢價,然後分析出最合適的,買好各種配件自己組裝好

物件導向:請一個懂組裝電腦的專家,告訴他我要一台新電腦,他組裝好之後給我

 

物件導向的好處:

1.更符合人們的思考習慣

2.物件導向更像是一個指揮者,而面向過程像執行者

3.物件導向的思維方式可以將複雜的問題簡單化

4.世界萬物皆是對象

 

舉例:用類的方式,描述現實中的汽車

定義汽車:

public class Car {    //定義顏色    String color;    //定義輪胎個數    int count;    //定義跑的功能    public void run(){        System.out.println(color+"色的"+count+"輪車在跑");    }}

運行汽車:

public class CarTest {    public static void main(String[] args) {        Car c = new Car();        c.color = "黑";        c.count = 3;        c.run();    }}

運行後:

 

對象的記憶體分析:

1.main方法進入棧中運行

2.建立一個Car類,在堆記憶體開一片空間,存入這個建立的對象,類的成員變數跟隨進入堆中,並賦予預設值(null,0)

3.這個記憶體位址傳給引用型變數c,即c指向記憶體中的這個對象

4.c指向的記憶體中的變數color,count被修改

5.方法run由對象c調用,進棧執行

6.run方法執行完畢,釋放棧記憶體

7.main方法結束,釋放棧記憶體

8.c變數消失,堆記憶體中的對象被清除,釋放記憶體

 

 

類和對象的關係:

類:對某一類事物的抽象描述

對象:用於表示現實中該事物的個體

類用於描述多個對象的共同特徵,相當於一個模板

對象是通過類建立出來的,一個類可以對應多個對象

 

寫在類中的變數是成員變數,寫在類的方法中的變數是局部變數,區別:

範圍

成員變數:作用範圍是整個類

局部變數:作用於方法內或語句內

預設值

成員變數:有預設值(null,0,0.0)

局部變數:沒有預設值,不賦值不能使用

記憶體位置

成員變數:跟隨對象進入堆記憶體中進行儲存

局部變數:跟隨自己的方法進入棧記憶體

生命週期

成員變數:跟隨對象,儲存在堆記憶體中,等待JVM清理,生命週期相對更長

局部變數:跟隨方法的,只要方法出棧,就不存在了,生命週期相對更短

 

 

物件導向三大特徵:封裝,繼承,多態

封裝表現:

方法就是一個最基本的封裝體

類其實也是一個封裝體

封裝的特點:

1.提高了代碼的複用性

2.隱藏了實現細節,還要對外提供可以訪問的方式,便於調用者的使用

3.提高了安全性

 

封裝的現實舉例:

一台電腦機箱,裡面有CPU,記憶體,硬碟等組件,如果散落在外邊,會有很多不安全因素,因此把它們放在機箱裡,並且提供各種插口供人們使用

 

private關鍵字:

定義一個類:

public class Person {    //人的姓名年齡,成員變數    String name;    int age;    //說話功能    public void speak() {        System.out.println(age+"歲的"+name+"在說話");    }    }

測試:

public class PersonTest {    public static void main(String[] args) {        Person p = new Person();        p.age = -200;        p.name = "張三";        p.speak();    }}

運行後:

不合常理,於是我們想,如果不能修改age變數,這個問題就可以解決,於是有了private關鍵字

被private修飾的成員,只能在自己的本類中使用

可以對私人的成員,提供公用的訪問方式:方法

public class Person {    // 人的姓名年齡,成員變數    String name;    private int age;    // 定義方法,對age賦值    public void setAge(int a) {        if (a < 0 || a > 100) {            age = 20;        } else {            age = a;        }    }        //定義方法,擷取age    public int getAge(){        return age;    }        // 說話功能    public void speak() {        System.out.println(age + "歲的" + name + "在說話");    }}
public class PersonTest {    public static void main(String[] args) {        Person p = new Person();        p.setAge(80);        System.out.println(p.getAge());        p.name = "張三";        p.speak();    }}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.