Java基礎知識筆記六(詳細)

封裝

1.封裝概述
是面向對象三大特徵之一
是面向對象編程語言對客觀世界的模擬,客觀世界裏成員變量都是隱藏在對象內部的,外界無法直接操作和修改。就像年齡。
2.封裝原則:
將不需要對外提供的內容都隱藏起來。
把屬性隱藏,提供公共方法對其訪問。
成員變量private,提供對應的getXxx()/setXxx()方法
3,優點:
通過方法來控制成員變量的操作,提高了代碼的安全性
把代碼用方法進行封裝,提高了代碼的複用性

this關鍵字

1.this:代表所在類的對象引用
方法被哪個對象調用,this就代表那個對象
2.什麼時候使用this?
局部變量隱藏成員變量

  • java中有就近原則
  • 在定義變量名稱的時候需要達到見名之意
  • this
  • 方法被那個對象調用,this就是那個對象
public class Student {
    private String name;//成員變量
    private int age;
    public void show(String name){//局部變量
        System.out.println(this);
        System.out.println(this.name+"你好"+"我來自北京,我是:"+name);
    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return age;
    }
}

學生的測試類

public class DemoStudent {
    public static void main(String[] args) {
        //創建學生對象
        Student stu = new Student();
        System.out.println(stu);
        //對成員變量進行賦值
        stu.setName("小明");
        stu.setAge(38);
        stu.show("小紅");
        System.out.println("======================");
        Student stu2 = new Student();
        System.out.println(stu2);
        stu.setName("小李");
        stu2.show("小軍");
    }
}

構造方法

1.構造方法作用概述
給對象的數據進行初始化
2.構造方法格式
方法名與類名相同
沒有返回值類型

public Person(){
    System.out.println("構造方法被執行了...");
}

3.構造方法注意事項
如果你不提供構造方法,系統會給出默認構造方法
如果你提供了構造方法,系統將不再提供
構造方法也是可以重載的
4,構造的作用:
(1)創建對象
(2)用來對變量進行賦值

public Person(String name){
    this.name = name;
}
public Person(String name,int age){
    this.name = name;
    this.age = age;
}

如何調用構造方法?
構造方法需要new關鍵字進行調用
格式: 類名 對象名 = new 類名(...);

public class DemoPerson {
    public static void main(String[] args) {
        Person p = new Person();
        System.out.println("------------");
        Person p2 = new Person("小明");
        p2.show();
        System.out.println("------------");
        Person p3 = new Person("小軍",18);
        p3.setAge(18);
        p3.show();
    }
}

標準類的寫法

1,標準的學生類:
也稱爲JavaBean是Java語言編寫類的一種標準規範。符合JavaBean的類,要求類必須是具體的和公共的,並且具有無參數的構造方法,提供用來操作成員變量的set和get方法。
2,給成員變量賦值的方式:
(1)無參構造方法+setXxx()
(2)帶參構造方法
我們現在要定義一個標準的類,這個標準的類又被稱爲javabean。
什麼是javabean
類的修飾符是公共的
具備有參和無參構造
成員變量必須是private私有修飾
必須爲變量提供get和set方法

public class Student {
    private String name;
    private int age;
    private boolean male;
    public Student() {
    }
    public Student(String name, int age, boolean male) {
        this.name = name;
        this.age = age;
        this.male = male;
    }
    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;
    }
    public boolean isMale() {
        return male;
    }
    public void setMale(boolean male) {
        this.male = male;
    }
}
public static void main(String[] args) {
    //創建兩個對象,使用構造和set方法分別去進行賦值
    Student stu1 = new Student();
    stu1.setName("小明");
    stu1.setAge(18);
    System.out.println("姓名:"+stu1.getName()+"年齡:"+stu1.getAge());

    Student stu2 = new Student("小紅",19,true);
    System.out.println("姓名:"+stu2.getName()+"年齡:"+stu2.getAge());
}

3,注意事項:
如果你的成員變量裏面涉及到Boolean類型,
那麼變量對應的setXxx方法不變,
但是getXxx方法需要寫成 isXxx
fn+alt+insert 快捷鍵

類名作爲形式參數和返回值

1,類名作爲形式參數案例
其實是該類的對象

public class Student {
    public void study(){
        System.out.println("每天在學習");
    }
}
public class Teacher {
    public void method(Student s){
        s.study();
    }
}

如果類作爲方法的參數,其實就是傳遞當前類的對象

public class Test {
    public static void main(String[] args) {
        Teacher t = new Teacher();
        Student stu = new Student();
        t.method(stu);
    }
}

2,類名作爲返回值案例
返回的其實是該類的對象

public class Student {
    public void study(){
        System.out.println("每天在學習");
    }
}
public class Teacher {
    public Student getStudent(){
        Student stu = new Student();
        return stu;
    }
}

如果類作爲方法的返回值,返回的其實是對象

public class Test {
    public static void main(String[] args) {
        Teacher t = new Teacher();
        Student stu = t.getStudent();
        stu.study();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章