java17 OOP基礎(chǔ) 2022-02-08

/**
封裝性
*/
public class Test1 {
    public static void main(String[] args) {
        //沒有封裝
        Person p1 = new Person();
        p1.name="xu";
        p1.age=18;
        //封裝
        Pet cat = new Pet();
        cat.setAge(2);
        cat.setName("miaomiao");

    }
}
//沒有封裝(在類外部創(chuàng)建對象后直接訪問屬性(隨意修改屬性))
class Person{
    String name;
    int age;
}
//封裝后(加private關(guān)鍵字悦昵,訪問權(quán)限修飾符肴茄;私有的屬性或方法,只能在本類中訪問抗楔。public 公有的屬性和方法可以被類外部的其他類訪問
// 。訪問私有屬性使用Getter Setter方法
// 一般寫屬性都會封裝)
class Pet{
    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;
    }
}
image.png
/**
構(gòu)造方法:構(gòu)造方法是在類中定義的,構(gòu)造方法的定義格式:方法名稱與類名稱相同骄噪,無返回值類型的聲明示弓。
 1.構(gòu)造方法就是類構(gòu)造對象時調(diào)用的方法,用于對象的初始化工作
 2.構(gòu)造方法是實例化一個類的對象時奏属,也就是new的時候最先調(diào)用的方法跨跨。

*/
public class Test1 {
    public static void main(String[] args) {
        Person p = new Person();//調(diào)用無參構(gòu)造方法
        Person p1 = new Person("xu", 18);//調(diào)用有參構(gòu)造方法
        Pet cat = new Pet(3,"huahua");//在構(gòu)造方法中調(diào)用另一個構(gòu)造方法

    }
}
class Person{
    //默認構(gòu)造方法,可不顯示(如果有有參構(gòu)造方法還想用無參構(gòu)造方法嘱腥,必須將無參構(gòu)造顯示)
    public Person() {
        System.out.println("構(gòu)造方法執(zhí)行了");
    }
    public Person(String name,int age) {
        this.name=name;
        this.age=age;
        System.out.println("有參構(gòu)造方法執(zhí)行了");
    }
    private String name;
    private int age;
}
//在構(gòu)造方法中調(diào)用另一個構(gòu)造方法
class Pet{
    private int age;
    private String name;
    public Pet() {}
    public Pet(int age) {
        this.age = age;
        System.out.println("一個參數(shù)的構(gòu)造方法執(zhí)行了");
    }
    public Pet(int age, String name) {
        this(age);//調(diào)用一個參數(shù)的構(gòu)造方法(必須在第一句)
        this.name = name;
        System.out.println("兩個參數(shù)的構(gòu)造方法執(zhí)行了");
    }
}
/**
this:
 1.調(diào)用類中的屬性
 2.調(diào)用類中的方法或構(gòu)造方法
 3.表示當(dāng)前對象
 4.類名.this(內(nèi)部類中會使用)

*/
public class Test1 {
    public static void main(String[] args) {
        Cat c = new Cat();
        c.setAge(3);
        c.setName("huahua");

        Cat c1 = new Cat();
        c1.setName("sansan");
        c1.eat();

    }
}
class Cat{
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;//this代表調(diào)用setName方法的對象耕渴,這里是c
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void eat(){
        //在方法中使用this調(diào)用類中的其他方法或?qū)傩裕瑃his可以省略
        System.out.println("我是"+this.getName()+",我愛吃魚");//this代表調(diào)用eat方法的對象齿兔,這里是c1
    }
}
/**
值傳遞(基本數(shù)據(jù)類型都是)
*/
public class Test1 {
    public static void main(String[] args) {
        int x=10;
        method(x);
        System.out.println("x="+x);
    }
    public static void method(int mx){
        mx=20;
    }
}
//輸出結(jié)果為x=10
image.png
/**
引用傳遞
*/
public class Test1 {
    public static void main(String[] args) {
        Duck d = new Duck();
        method(d);
        System.out.println("Duck age="+d.age);
    }
    public static void method(Duck duck){
        duck.age=20;
    }
}
class Duck{
    int age=2;//省略封裝
}
//結(jié)果是Duck age=20
image.png
/**
String傳遞
字符串本身就是一個對象
*/
public class Test1 {
    public static void main(String[] args) {
        String name="xu";
        method(name);
        System.out.println("name="+name);
    }
    public static void method(String sname){
        sname="zhang";
    }
}
//結(jié)果是name=xu
image.png
/**
String傳遞2
*/
public class Test1 {
    public static void main(String[] args) {
        Person p = new Person();
        method(p);
        System.out.println("person name="+p.name);
    }
    public static void method(Person per){
        per.name="xu";
    }
}
class Person{
    String name="zhang";//省略封裝
}
//輸出person name=xu
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末橱脸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子分苇,更是在濱河造成了極大的恐慌添诉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件医寿,死亡現(xiàn)場離奇詭異栏赴,居然都是意外死亡,警方通過查閱死者的電腦和手機靖秩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門须眷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乌叶,“玉大人,你說我怎么就攤上這事柒爸∽荚。” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵捎稚,是天一觀的道長乐横。 經(jīng)常有香客問我,道長今野,這世上最難降的妖魔是什么葡公? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮条霜,結(jié)果婚禮上催什,老公的妹妹穿的比我還像新娘。我一直安慰自己宰睡,他們只是感情好蒲凶,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拆内,像睡著了一般旋圆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上麸恍,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天灵巧,我揣著相機與錄音,去河邊找鬼抹沪。 笑死刻肄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的融欧。 我是一名探鬼主播敏弃,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蹬癌!你這毒婦竟也來了权她?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤逝薪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蝴罪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體董济,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年要门,在試婚紗的時候發(fā)現(xiàn)自己被綠了虏肾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廓啊。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖封豪,靈堂內(nèi)的尸體忽然破棺而出谴轮,到底是詐尸還是另有隱情,我是刑警寧澤吹埠,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布第步,位于F島的核電站,受9級特大地震影響缘琅,放射性物質(zhì)發(fā)生泄漏粘都。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一刷袍、第九天 我趴在偏房一處隱蔽的房頂上張望翩隧。 院中可真熱鬧,春花似錦呻纹、人聲如沸堆生。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顽频。三九已至,卻和暖如春太闺,著一層夾襖步出監(jiān)牢的瞬間糯景,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工省骂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蟀淮,地道東北人。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓钞澳,卻偏偏與公主長得像怠惶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子轧粟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容