【Java語言基礎】面向對象
Java語言是面向對象的編程語言
對象
對象:是構成系統的最基本的單位
- 屬性:描述對象的靜態特徵(成員變量)
- 行爲:描述對象的動態特徵(成員方法和構造方法)
類是模型,對象是實例;類是抽象的,對象是具體的。類是建築圖紙,對象是某個大樓。
定義類的簡單語法格式
[修飾符] class 類名{
成員變量來描述靜態的屬性,一般成員變量不初始化
成員方法來描述動態的行爲
構造方法:b默認構造方法就是一個空的方法體,不寫也存在-->類名(){}
}
[修飾符]可以是:[public公共類][abstract抽象類 | final最終類]默認爲friendly只能被本包使用,成員變量增加private(只有自己的類可以用
例:
聲明一個類可以計算矩形的面積與周長。
public class Test {
public static void main(String[] args){
//調用 Rectangle這個類
Rectangle c1 = new Rectangle(5,5);
System.out.println("周長是:" + c1.zc() + ",面積是:" + c1.mj());
}
}
// Rectangle爲計算面積周長的類
class Rectangle{
//成員變量爲Long與Wide
double Long;
double Wide;
//成員方法給成員變量賦值
Rectangle(double a,double b){
Long = a;
Wide = b;
}
//計算周長的公式,double代表返回值爲double類型,返回什麼樣的數據類型,就寫什麼數據類型,若無返回值則爲void
double zc() {
return 2 * (Long + Wide);
}
//與周長同理
double mj(){
return Long * Wide;
}
}
構造方法和成員方法的區別:構造方法是一種特殊的成員方法:1.方法名和類名相同 2.自動調用的 3.沒有返回值類型
調用方法
類名 名字 = new 類名([]);
名字.成員變量....
類也是一種數據類型,是一種引用數據類型,括號裏看看有沒有需要參數
構造方法可以加多個形參,叫做構造方法的重載,如果顯示定義了帶參數的構造方法,系統就不會再給默認的構造方法
用構造方法構造對象時,構造方法裏的成員變量就是該對象的成員變量
定義成員變量
[修飾符] 類型 成員變量名 [= 初始值];
定義成員方法
[修飾符] 返回值類型 方法名([形式參數表]){
方法體;
}
定義構造方法
[修飾符(一般加public)] 類名([形參列表]){
//構造方法的方法體
}
[修飾符]可以是:[public公共類][abstract抽象類 | final最終類]默認爲friendly只能被本包使用,成員變量增加private(只有自己的類可以用
面向對象三大特點
封裝
把新創建的類裏面的成員變量加private修飾符,設置僅爲本類可看
注:成員方法,可以訪問任何權限的成員變量
使用public [void或者返回值類型] 方法名([數據類型 形參名]){}修改(局部變量實參的值賦值給成員變量)
或者調用(return操作後的返回值或其他,如果不進行修改賦值,則會變成數據類型的默認值)
例:
輸入當前年月日,並輸出
class Date{
private int year,month,day;
public Date(){
//(2)調用本類已定義的其他構造方法
this(2020,4,2);//不能寫成Date(2020,4,2)
}
public Date getThis(){
//(3)返回對象本身,
return this;
}
//拷貝構造方法,由已經存在的對象創建新對象,使用的時候傳遞對象名字傳遞過去就行了
public Date(Date oday){
this(oday.year,oday.month,oday.day);
}
//調用toString方法,使用的時候直接調用即可,和toString效果一樣
public String fun(){
retutn this.toString;
}
public Date(int year,int month,int day){
//(1)this代表這個對象本身,實例化哪個對象時this就代表哪個對象本身
this.year = year;
this.month = month;
this.day = day;
}
public String toString(){
//this在這裏可以省略
return year + "-" + month + "-" + day;
}
}
其他類無法訪問本成員變量,使之更加私密
this的用法
- 若成員變量與形參相同時,成員變量前可以加上this,避免傳不進去值,this代表這個對象本身,實例化哪個對象時this就代表哪個對象本身
- 如果想在一個構造方法裏面調用其他已被定義的構造方法。需要使用this(實參);(注意:調用的時候,this必須放到第一個語句)
- 返回對象本身,把一個對象的值,給另外一個對象