面向對象編程快速入門:
計算機是用來處理數據的。
單個變量
數組變量
對象數據
Student類:
package cn.ensource.object;public class Student {String name;double chinese_score;double math_score;public void printTotalScore() {System.out.println(name + "的總成績是: " + (chinese_score + math_score));}public void printAverageScore() {System.out.println(name + "的平均成績是: " + (chinese_score + math_score) / 2.0);}
}
測試類:
package cn.ensource.object;public class Test {public static void main(String[] args) {// 目標:面向對象編程快速入門// 創建一個學生對象,封裝波妞的數據Student s1 = new Student();s1.name = "播妞";s1.chinese_score = 100;s1.math_score = 100;s1.printTotalScore();s1.printAverageScore();Student s2 = new Student();s2.name = "播仔";s2.chinese_score = 59;s2.math_score = 59;s2.printTotalScore();s2.printAverageScore();}
}
開發一個一個的對象,把數據交給對象,再調用對象的方法來完成對數據的處理。
深刻認識面向對象:
1)面向對象編程的好處?
世界萬物皆對象。
汽車的數據找汽車對象處理。
手機的數據找手機對象處理。
學生的數據找學生對象處理。
符合人類的思維習慣,編程更簡單,更直觀。
2)程序中的對象到底是個啥?
對象本質上是一種特殊的數據結構。
對象就是一個表。
對象是用類new出來的,有了類就可以創建對象。
類名 對象名 = new 類名();
3)對象是怎么出來的?
class也是類,也稱為對象的設計圖(或者對象的模板)。
面向對象編程這種套路是咋回事?
祖師爺認為萬物皆對象,誰的數據誰處理。
面向對象編程(OOP):
把現實世界中的事物全部看成一個一個的對象來解決問題的。Java的核心思想:萬物皆對象。
類(設計圖):相同事物的共同特征的描述。
對象:對象是類的具體實例。對象和實例是一回事。
定義類的一些注意事項:
1)類名首字母建議大寫、有意義、滿足駝峰,不要用關鍵字,合法的標識符;
2)一個java文件中可以定義多個類,但是只能一個類是public修飾的,而且public修飾的類名必須成為java的文件名,否則報錯。
類中具體怎么寫呢?
一般名詞定義為屬性(成員變量)。修飾符、數據類型、變量名稱 = 初始值。
private String name;
private double score;
成員變量不建議初始化,存在默認值,默認值的規則:0、0.0、null、false。
一般動詞定義成方法(行為):修飾符、返回值、方法名(形參)
創建對象:
類名? 對象名 = new 構造器();
對象的使用:
對象名.成員變量
對象名.成員方法
構造器:
構造器的作用:初始化類的對象,并返回對象的地址。
詳細格式:
分類:無參數構造器(初始化一個類的對象,里面的數據都是默認值,并返回對象的地址)、無參數構造器(初始化一個類的對象,并返回對象的地址,并且可以同時為對象的成員變量賦值。)
構造器如何調用:
類名 對象名稱 = new 構造器();
注意:任何類,自帶一個無參數構造器,寫不寫都有;
如果在類中定義了一個又參數的構造器,那么無參數構造器就消失了,此時,如果還想使用無參數構造器,必須自己寫一個。
構造器在IDEA中都是可以自動生成的。
this關鍵字:代表當前對象的地址。可以訪問當前對象的成員對象和成員方法。
this具體用在什么地方?
1)可以用在有參數構造器中的。
2)在方法中,形參和局部變量跟成員變量相同,可以使用this來區別。誰調用方法,this就代表誰。
封裝:封裝是特點,按這個特點寫。
面相對象的三大特征:封裝、繼承、多態
封裝:就是將變量、方法放到一個事物中。決定屬性和行為歸屬誰的問題。
如何更好地封裝呢?
合理隱藏、合理暴露。
成員變量建議private私有化、只能本類訪問。
合理暴露:提供成套的getter/setter方法,暴露取值和賦值。
代碼可以自動生成。
標準JavaBean:
實體類:(學生類、老師類、汽車類、門類、人類)。
作用:創建對象,封裝數據的。
標準Bean的書寫要求:
成員變量建議private私有化、只能本類訪問。
合理暴露:提供成套的getter/setter方法,暴露取值和賦值。
必須提供無參數構造器。
局部變量和成員變量的區別?
這個還是很好理解的。