日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JAVA类思维_面向对象思维 Java中的类和对象及其应用

發布時間:2023/12/4 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA类思维_面向对象思维 Java中的类和对象及其应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、面向過程與面向對象

面向過程: 從事務執行者的角度思考問題,我該干什么? 重點在過程----事務流程

面向對象: 從事務的指揮者角度思考問題,我應該找誰干什么? 重點在對象

面向對象的優點:

1.將復雜問題簡單化

2.從事務的執行者轉化為事物的指揮者

3.更貼近人的思維(懶人思想)

二、類和對象

類是Java中最基本的單位,是一類抽象事物的集合? 對抽象事物的描述(模板)

對象: 用類創建出來的具體的事物就是對象

抽象描述類:

類中的屬性是指成員變量

類中的行為是指成員方法//屬性 (成員變量 實例變量)

//書寫位置: 類中,方法外

//行為 (方法) 和Java中函數的聲明一樣,只是不寫static關鍵字

//書寫位置: 類中

創建一個類:? 關鍵字 + class + 類名(大駝峰命名) + { }

例如: 創建一個學生類

屬性:? 姓名? 年齡? 性別

行為:? 吃飯? 睡覺? 打游戲class Student{

String name;

int age;

String gender;

// 方法---成員方法、實例方法

public void eat(){

System.out.println("吃飯");

}

public void sleep(){

System.out.println("睡覺");

}

public void playGame(String game){

System.out.println("打" + game);

}

}

創建對象:? 類名 + 對象名 = 初值;

例如: 創建一個學生類的對象Student stu = new Student();

// 使用 對象名.屬性名 = 值; 對對象的屬性進行賦值和取值

stu.name = "IT彭于晏";

stu.age = "16";

stu.gender = "男";

// 調用成員方法 對象名.方法名();

stu.eat();

stu.sleep();

stu.playGame("毒奶粉");

stu.sayHi(); //在類中聲明一個sayHi方法,哪個對象調用該方法,打印的就是哪個對象的屬性

三、成員變量與局部變量

成員變量與局部變量的區別:

1.書寫位置不同:

成員變量:? 類中方法外

局部變量:? 方法中或方法上(參數位置)

2.在內存中的表現不同:

成員變量:? 堆內存中

局部變量:? 棧內存中

3.生命周期不同:

成員變量:? 隨著對象進入堆內存中創建,隨著對象的銷毀而銷毀

局部變量:? 隨著方法的調用而入棧,隨著方法的結束而銷毀

4.作用域不同:

成員變量:? 整個類中

局部變量:? 方法中

5.初始值不同:

成員變量:? 跟堆內存一樣,有默認的初始值 0 null

局部變量:? 默認沒有初值 不給初值編譯時會報錯 (局部變量聲明時必須帶有初值)

四、同名類

在同一個項目中可以有同名的類,創建在不同的包下

創建不同包下的同名類,需要指定完整的包名來創建對象

一般情況下不建議寫同名類

例如: 在包3和包4下各創建一個person類

//創建一個包3類的person對象

Person p1 = new Person( );

//在繼續創建一個包4類下的person對象

com.bao3.Person p2 = new com.bao3.Person( ); // 需要指定完整的包名

注意:

在方法中基本數據類型的傳遞是值? ?引用數據類型則是地址的傳遞 (要什么類型給什么類型)

五、匿名對象

匿名對象: 沒有名字的對象

1. 一般 在方法傳參的時候調用

2. 只調用一下方法(不賦值的情況下)

使用匿名對象當方法的參數 可以減少代碼量,方便使用public static void main(String[] args) {

// 創建兩個Person對象 并賦值

// 將重復代碼 抽成一個方法

Person p1 = new Person();

p1.name = "linqingxia";

p1.age = 16;

p1.sayHi();

Person p2 = new Person();

setNameAndAge(p2, "wangzuxian", 25);

// 使用匿名對象 當方法的參數

setNameAndAge(new Person(), "maoqiu", 20);

// 匿名對象 也是對象 也可以賦值 調用成員方法

new Person().name = "xin";

new Person().age = 30;

new Person().sayHi(); // 注意: 獲取不到"xin" 30----每new一次在堆內存中新生成一塊空間

// 只調用方法可以使用匿名對象

// 測試方法的時候 可能會使用

new Person().fun();

}

六、封裝與構造方法

封裝

Java中 寫 方法、函數 就是封裝的一種

封裝相當于隱藏了代碼的實現和屬性 不能隨意修改

需要開放訪問的接口(方法 方式) 來獲取或修改封裝的代碼

優點:

1.提高了代碼的復用性

2.提高了代碼的安全性

關鍵字 中的 權限修飾符--> private 私有的

被private修飾的屬性 只能本類中訪問

java bean 規范(java的實體類創建出來的對象)

1.聲明成員變量 都需要 私有化

2.給每個成員變量提供set和get方法

3.必須提供 無參的構造方法class Phone{

private String phoneName;

// 獲取方法

public String getPhoneName(){

return phoneName;

}

// 修改方法

public void setPhoneName(String phoneName){

this.phoneName = phoneName;

// 關鍵字 this 代表的是本類的對象

// this.成員變量 獲取本類的成員變量

// this.成員變量 = "哈哈"; 給本類的成員變量賦值

// this.成員方法 調用本類的成員方法

// 誰調用了這個方法 誰就是this

}

}

命名規范

獲取get + 成員變量名(首字母大寫)

修改set + 成員變量名(首字母大寫)

標準寫法 set方法 是沒有返回值的

構造方法

構造方法: 對對象的成員變量 進行初始化

寫法:

1. 沒有返回值位置(void也不用寫)

2. 構造方法的方法名 要與 類名 完全一致

構造方法是系統幫你調用的

只要你創建對象 系統就會自動調用構造方法

構造方法 只會執行一遍class Pen {

/*

* 類中書寫順序

* 1.成員變量

* 2.構造方法---無參的 有參的

* 3.成員方法---sayHi之類的 自己寫的

* 4.set/get方法

*/

private String name;

private String color;

// 構造方法(無參)

public Pen() {

// 初始化成員變量(給成員變量賦值)

this.name = "圓珠筆";

this.color = "紅色";

System.out.println("我是pen類的無參構造方法");

}

// 有參構造方法(構造方法的重載)

// 為了在創建對象的同時 給成員變量賦值

public Pen(String name,String color) {

this.name = name;

this.color = color;

System.out.println("我是有參的構造方法");

}

}// 介紹自己的方法

public void sayHi() {

String name = "linaiang";

// 使用this 可以區分 成員變量 和 局部變量

System.out.println(this.name + " " + this.color);

}

總結

以上是生活随笔為你收集整理的JAVA类思维_面向对象思维 Java中的类和对象及其应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。