真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaSE——類和對象-創(chuàng)新互聯(lián)

目錄

我們提供的服務有:網(wǎng)站設計、成都網(wǎng)站設計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、康巴什ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術(shù)的康巴什網(wǎng)站制作公司

一、萬物皆對象?? ?

二、類的定義方式以及對象的實例化

1.類的定義方式

2.對象的實例化

三、類中的成員變量和成員方法的使用?

1.static修飾成員變量?

2.static修飾成員方法?

四、對象的整個初始化過程

1.?初始化對象

2.構(gòu)造方法

3.默認初始化 ?

4.就地初始化

五、封裝特性

訪問限定符?

六、代碼塊

1.普通代碼塊

2.構(gòu)造代碼塊?

3.靜態(tài)代碼塊?

七、內(nèi)部類

1.成員內(nèi)部類

1)普通內(nèi)部類

2)靜態(tài)內(nèi)部類?

2.局部內(nèi)部類


一、萬物皆對象?? ?

1. 在學習類和對象之前先了解一下面向?qū)ο蟮倪^程:

一圖可解傳統(tǒng)洗衣服都面向一個過程:拿水盆->倒水->放衣服->放洗衣粉->手搓->換水->放洗衣粉->手搓->擰干->晾衣服,少一個環(huán)節(jié)可能都不行

? 2.那么接下來關于面向?qū)ο笙匆路?

以面向?qū)ο蠓绞絹磉M行處理,就不關注洗衣服的過程,具體洗衣機是怎么來洗衣服,如何來甩干的,用戶不用去關心,只需要將衣服放進洗衣機,導入洗衣粉,啟動開關

二、類的定義方式以及對象的實例化

類是用來對一個實體(對象),主要描述該實體(對象)具有哪些屬性(外觀尺寸等),哪些功能(用來干啥)

1.類的定義方式
  • class為定義類的關鍵字,ClassName為類的名字,{}中為類的主體
// 創(chuàng)建類
class ClassName{ 
    field; // 字段(屬性) 或者 成員變量
    method; // 行為 或者 成員方法 
}
  • 類中包含的內(nèi)容稱為類的成員,屬性主要是用來描述類的,稱之為類的成員屬性或者類成員變量。方法主要說明類具有哪些功能,稱為類的成員方法
public class WashMachine {
    public String brand;// 品牌
    public String type;// 型號
    public double weight;// 重量
    public double lenght;// 長
    public double weigth;// 寬
    public double height;// 高
    public String color;// 高

    public void washClothes(){// 洗衣服
        System.out.println("洗衣功能");
    }

    public void dryClothes(){// 脫水
        System.out.println("脫水功能");
    }

    public void setTime(){// 定時
        System.out.println("定時功能");
    }
}
  • 小練習鞏固定義類:
public class PetDog {
    //定義一個狗類
    public String name;//名字
    public String color;//顏色

    // 狗的屬性
    public void barks(){
        System.out.println(name+":汪汪汪~~~");
    }

    // 狗的行為
    public void wag(){
        System.out.println(name+":搖尾巴~~~");
    }
}

2.對象的實例化
  • 用類類型創(chuàng)建對象的過程,稱為類的實例化,在java中采用new關鍵字,配合類名來實例化對象
public class Main {
    //實例化
    public static void main(String[] args) {
        PetDog dogh = new PetDog();//通過new實例化對象
        dogh.name = "阿黃";
        dogh.color = "黑黃";
        dogh.barks();
        dogh.wag();

        PetDog dogs = new PetDog();
        dogh.name = "阿黃";
        dogh.color = "黑黃";
        dogh.barks();
        dogh.wag();
    }
}

  • this引用的是調(diào)用成員方法的對象
public class Date {
    public int year;
    public int month;
    public int day;

    public void setDay(int year,int month,int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public void printDate(){
        System.out.println(this.year+"/"+this.month+"/"+this.day);
    }

    public static void main(String[] args) {
        Date d = new Date();
        d.setDay(2023,1,12);
        d.printDate();
    }
}

【this引用的特性】

????????1. this的類型:對應類類型引用,哪個對象調(diào)用就是哪個對象的引用類型 ????????2. this只能在 " 成員方法 " 中使用 ????????3. 在 " 成員方法 " 中, this 只能引用當前對象,不能再引用其他對象 ????????4. this是 “ 成員方法 ” 第一個隱藏的參數(shù),編譯器會自動傳遞
三、類中的成員變量和成員方法的使用?

1.static修飾成員變量?
  • static修飾的成員變量,稱為靜態(tài)成員變量?
public class Student1{
    public String name;
    public String sex;
    public int age;
    public double score;
    public static String classRoom = "Bit306";

    public static void main(String[] args) {
        // 靜態(tài)成員變量可以直接通過類名訪問
        System.out.println(Student1.classRoom);

        Student1 s1 = new Student1("LiLeiLei","男",18,3.8);
        Student1 s2 = new Student1("HanMeiMei","女",19,4.0);
        Student1 s3 = new Student1("Jim","男",18,2.6);

        // 也可以通過對象訪問:但是classRoom是三個對象共享的
        System.out.println(s1.classRoom);
        System.out.println(s2.classRoom);
        System.out.println(s3.classRoom);

    }
}

【靜態(tài)成員變量特性】

????????1. 不屬于某個具體的對象,是類的屬性,所有對象共享不存儲在某個對象的空間中 ????????2. 既可以通過對象訪問,也可以通過類名訪問 ????????3. 類變量存儲在方法區(qū)當中 ? ? ? ? 4. 生命周期伴隨類的一生 ( 隨類的加載而創(chuàng)建,隨類的卸載而銷毀 )
2.static修飾成員方法?
  • Java中,被static修飾的成員方法稱為靜態(tài)成員方法,是類的方法,不是某個對象所特有的。靜態(tài)成員一般是通過靜態(tài)方法來訪問

public class Student2 {
    public String name;
    public String gender;
    public int age;
    public double score;
    public static String classRoom = "Bit306";

    public static String getClassRoom(){
        return classRoom;
    }

    public static void main(String[] args) {
        System.out.println(Student2.classRoom);
    }

}

【靜態(tài)方法特性】

1. 不屬于某個具體的對象,是類方法

2. 可以通過對象調(diào)用,也可以通過類名.靜態(tài)方法名(...)方式調(diào)用

3. 靜態(tài)方法沒有隱藏的this引用參數(shù)

4. 靜態(tài)方法中不能調(diào)用任何非靜態(tài)方法

四、對象的整個初始化過程 1.?初始化對象
  • ??????需要調(diào)用之前寫的SetDate方法才可以將具體的日期設置到對象中

2.構(gòu)造方法
  • 構(gòu)造方法(也稱為構(gòu)造器)是一個特殊的成員方法,名字必須與類名相同,在創(chuàng)建對象時,由編譯器自動調(diào)用,并且在整個對象的生命周期內(nèi)只調(diào)用一次
public class Date {
    public int year;
    public int month;
    public int day;

    // 構(gòu)造方法:
    // 名字與類名相同,沒有返回值類型,設置為void也不行
    // 一般情況下使用public修飾
    // 在創(chuàng)建對象時由編譯器自動調(diào)用,并且在對象的生命周期內(nèi)只調(diào)用一次
    public Date(int year,int month,int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public void printDate(){
        System.out.println(this.year+"/"+this.month+"/"+this.day);
    }

    public static void main(String[] args) {
        // 此處創(chuàng)建了一個Date類型的對象,并沒有顯式調(diào)用構(gòu)造方法
        Date d = new Date(2023,1,12);// 輸出Date(int,int,int)方法被調(diào)用了
        d.printDate();//2023/1/12
    }
}

【構(gòu)造方法特性 】

????????1. 名字必須與類名相同 ????????2. 沒有返回值類型,設置為 void 也不行 ????????3. 創(chuàng)建對象時由編譯器自動調(diào)用,并且在對象的生命周期內(nèi)只調(diào)用一次 ????????4. 構(gòu)造方法可以重載 ( 用戶根據(jù)自己的需求提供不同參數(shù)的構(gòu)造方法 )
public class Date1 {
    public int year;
    public int month;
    public int day;

    //無參構(gòu)造方法
    public Date1() {
        this.year = 2023;
        this.month = 1;
        this.day = 12;
    }

    //帶有三個參數(shù)的構(gòu)造方法
    public Date1(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public void printDate(){
        System.out.println(year+"-"+month+"-"+day);
    }

    public static void main(String[] args) {
        Date1 d = new Date1();
        d.printDate();
    }
}
  • 名字相同,參數(shù)列表不同構(gòu)成了方法重載

?5. 如果用戶沒有顯式定義,編譯器會生成一份默認的構(gòu)造方法,生成的默認構(gòu)造方法一定無參

3.默認初始化 ?

public class Snakek {
    private int age;

    public static void main(String[] args) {
        Snakek snakek = new Snakek();
        System.out.println(snakek.age);//0
    }
}
  • 要搞清楚這個過程,就需要知道 new 關鍵字背后所發(fā)生的一些事情?

在程序?qū)用嬷皇呛唵蔚囊粭l語句,在JVM層面需要做好多事情,下面簡單了解:

????????1. 檢測對象對應的類是否加載了,如果沒有加載則加載 ????????2. 為對象分配內(nèi)存空間 ????????3. 處理并發(fā)安全問題 ????????4. 初始化所分配的空間

4.就地初始化
  • 在聲明成員變量時,就直接給出了初始值?
public class Date2 {
    public int year = 2023;
    public int month = 1;
    public int day = 12;

    public Date2() {

    }

    public Date2(int year, int month, int day) {

    }

    public static void main(String[] args) {
        Date2 d1 = new Date2(2023,1,12);
        Date2 d2 = new Date2();
    }
}
五、封裝特性

封裝:將數(shù)據(jù)和操作數(shù)據(jù)的方法進行有機結(jié)合,隱藏對象的屬性和實現(xiàn)細節(jié),僅對外公開接口來和對象進行 交互?

訪問限定符?

public :可以理解為一個人的外貌特征,誰都可以看得到 default: 對于自己家族中 ( 同一個包中 ) 不是什么秘密,對于其他人來說就是隱私了 private :只有自己知道,其他人都不知道
public class Computer {
    private String cpu;//cpu
    private String memory;//內(nèi)存
    public String screen;//屏幕
    String brand;// 品牌---->default屬性

    public Computer(String cpu, String memory, String screen, String brand) {
        this.cpu = cpu;
        this.memory = memory;
        this.screen = screen;
        this.brand = brand;
    }

    public void Boot(){
        System.out.println("開機~~~");
    }

    public void PowerOff(){
        System.out.println("關機~~~");
    }

    public void SurfInternet(){
        System.out.println("上網(wǎng)~~~");
    }

}

public class TestComputer {
    public static void main(String[] args) {
        Computer p = new Computer("HW","17","8G","13*14");
        System.out.println(p.brand);// default屬性:只能被本包中類訪問
        System.out.println(p.screen);// public屬性: 可以任何其他類訪問
        //System.out.println(p.cpu);// private屬性:只能在Computer類中訪問,不能被其他類訪問
    }
}
  • 一般情況下成員變量設置為private,成員方法設置為public
六、代碼塊

使用 {} 定義的一段代碼稱為代碼塊。根據(jù)代碼塊定義的位置以及關鍵字可分為以下四種?:普通代碼塊 、構(gòu)造塊 、靜態(tài)塊 、同步代碼塊(后續(xù)講解多線程部分再談)

1.普通代碼塊
  • 普通代碼塊:定義在方法中的代碼塊?
public class Main {
    public static void main(String[] args) {
        { //直接使用{}定義,普通方法塊
            int x = 10;
            System.out.println("x1 = "+x);//x1 = 10
        }
        int x = 100;
        System.out.println("x2 = "+x);//x2 = 100
    }
}
2.構(gòu)造代碼塊?
  • 構(gòu)造塊:定義在類中的代碼塊(不加修飾符)。也叫:實例代碼塊。構(gòu)造代碼塊一般用于初始化實例成員變量?
public class Student {
    //實例成員變量
    private String name;
    private String sex;
    private int age;
    private double score;

    public Student() {
        System.out.println("l am Student in it ()!");
    }

    //實例代碼塊
    {
        this.name = "bit";
        this.age = 12;
        this.sex = "man";
        System.out.println("I am instance init()!");
    }

    public void show(){
        System.out.println("name: "+name+" age: "+age+" sex: "+sex);
    }
}

public class Main {
    public static void main(String[] args) {     
        Person p1 = new Person();
        p1.show(); 
    }
}
3.靜態(tài)代碼塊?
  • 使用static定義的代碼塊稱為靜態(tài)代碼塊,一般用于初始化靜態(tài)成員變量?
public class Student1 {
    private String name;
    private String gender;
    private int age;
    private double score;
    private static String classRoom;

    //實例化代碼塊
    {
        this.name = "bit";
        this.age = 12;
        this.gender = "man";
        System.out.println("I am instance init()!");
    }

    //靜態(tài)代碼塊
    static {
        classRoom = "bit306";
        System.out.println("I am static init()!");
    }

    public Student1() {
        System.out.println("I am Student init()!");
    }

    public static void main(String[] args) {
        Student1 s1 = new Student1();
        Student1 s2 = new Student1();
    }
}

【注意事項】

? 1.靜態(tài)代碼塊不管生成多少個對象,其只會執(zhí)行一次

? 2.靜態(tài)成員變量是類的屬性

? 3.如果一個類中包含多個靜態(tài)代碼塊,在編譯代碼時,編譯器會按照定義的先后次序依次合并,最終放在生成的方法中,該方法在類加載時調(diào)用,并且只調(diào)用一次

? 4.實例代碼塊只有在創(chuàng)建對象時才會執(zhí)行

七、內(nèi)部類
  • 在 Java 中,可以將一個類定義在另一個類或者一個方法的內(nèi)部,前者稱為內(nèi)部類,后者稱為外部類。內(nèi)部類也是封裝的一種體現(xiàn)

1.成員內(nèi)部類

在外部類中,內(nèi)部類定義位置與外部類成員所處的位置相同?

1)普通內(nèi)部類
  • 未被static修飾的成員內(nèi)部類?
public class OutClass1 {
    private int a;
    static int b;
    int c;
    public void methodA(){
        a = 10;
        System.out.println(a);
    }

    public static void methodB(){
        System.out.println(b);
    }

    // 成員內(nèi)部類:未被static修飾
    class InnerClass{
        int c;
        public void methodInner(){
            // 在內(nèi)部類中可以直接訪問外部類中:任意訪問限定符修飾的成員
            a = 100;
            b = 200;
            methodA();
            methodB();
            // 如果外部類和內(nèi)部類中具有相同名稱成員時,優(yōu)先訪問的是內(nèi)部類自己的
            c = 300;
            System.out.println(c);
            // 如果要訪問外部類同名成員時候,必須:外部類名稱.this.同名成員名字
            OutClass1.this.c = 400;
            System.out.println(c);
        }
    }

    public static void main(String[] args) {
        // 外部類:對象創(chuàng)建 以及 成員訪問
        OutClass1 outClass1 = new OutClass1();
        System.out.println(outClass1.a);
        System.out.println(outClass1.b);
        System.out.println(outClass1.c);
        outClass1.methodA();
        outClass1.methodB();

        System.out.println("=============內(nèi)部類的訪問=============");
        
        // 創(chuàng)建內(nèi)部類對象
        InnerClass innerClass = new OutClass1().new InnerClass();

        // 先將外部類對象先創(chuàng)建出來,然后再創(chuàng)建內(nèi)部類對象
        InnerClass innerClass2 = outClass1.new InnerClass();
        innerClass2.methodInner();
    }
}
【 注意事項 】 ????????1. 外部類中的任何成員都可以被在普通內(nèi)部類方法中直接訪問 ? ? ? ? 2. 在內(nèi)部類方法中訪問同名的成員時,優(yōu)先訪問自己的 ? ? ? ? 3. 普通內(nèi)部類對象必須在先有外部類對象前提下才能創(chuàng)建 ? ? ? ? 4. 外部類中,不能直接訪問內(nèi)部類中的成員,如果要訪問必須先要創(chuàng)建外部類的對象
2)靜態(tài)內(nèi)部類?
  • 被static修飾的內(nèi)部成員類稱為靜態(tài)內(nèi)部類?
public class OutClass2 {
    private int a;
    static int b;
    public void methodA(){
        a = 10;
        System.out.println(a);
    }

    public static void methodB(){
        System.out.println(b);
    }

    // 靜態(tài)內(nèi)部類:被static修飾的成員內(nèi)部類
    static class InnerClass{
        public void methodInner(){
            // 在內(nèi)部類中只能訪問外部類的靜態(tài)成員
            //a = 100;  // 編譯失敗,因為a不是類成員變量
            b = 200;
            //methodA();    // 編譯失敗,因為methodB()不是類成員方法
            methodB();
        }
    }

    public static void main(String[] args) {
        // 靜態(tài)內(nèi)部類對象創(chuàng)建 & 成員訪問
        InnerClass innerClass = new InnerClass();
        innerClass.methodInner();
    }
}
【 注意事項 】 ????????1. 在內(nèi)部類中只能訪問外部類中的靜態(tài)成員 ????????2. 創(chuàng)建內(nèi)部類對象時,不需要先創(chuàng)建外部類對象
2.局部內(nèi)部類
  • 定義在外部類的方法體或者{}中?
public class OutClass3 {
    int a = 10;
    public void method(){
        int b = 10;

        // 局部內(nèi)部類:定義在方法體內(nèi)部
        // 不能被public、static等訪問限定符修飾
        class InnerClass{
            public void methodInnerClass(){
                System.out.println(a);
                System.out.println(b);
            }
        }

        // 只能在該方法體內(nèi)部使用,其他位置都不能用
        InnerClass innerClass = new InnerClass();
        innerClass.methodInnerClass();
    }

    public static void main(String[] args) {
        //OutClass2.InnerClass innerClass = null;編譯失敗
    }
}
【 注意事項 】 ????????1. 局部內(nèi)部類只能在所定義的方法體內(nèi)部使用 ????????2. 不能被 public 、 static 等修飾符修飾
與君共勉:時間最不偏私,給任何人都是二十四小時;時間也最偏私,給任何人都不是二十四小時

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


分享題目:JavaSE——類和對象-創(chuàng)新互聯(lián)
瀏覽地址:http://weahome.cn/article/disiph.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部