操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    #1024程序員節(jié)|用代碼,改變世界#

    Java類與對(duì)象

    大家好,我是曉星航。今天我們將為大家講解的是我們Java類與對(duì)象的概念及相關(guān)用法!

    1. 類與對(duì)象的初步認(rèn)知

    面向過(guò)程:

    面向?qū)ο螅?/p>

    2. 類和類的實(shí)例化

    類就是一類對(duì)象的統(tǒng)稱。對(duì)象就是這一類具體化的一個(gè)實(shí)例。

    總的來(lái)說(shuō):類相當(dāng)于一個(gè)模板,對(duì)象是/由模板產(chǎn)生的樣本。一個(gè)類,可以產(chǎn)生無(wú)數(shù)的對(duì)象。

    基本語(yǔ)法:

    // 創(chuàng)建類
    class {
         field;//成員屬性
         method;//成員方法
    }
    // 實(shí)例化對(duì)象
     <對(duì)象名> = new ();
    

    class為定義類的關(guān)鍵字,為類的名字實(shí)例名稱有什么用,{}中為類的主體。

    類中的元素稱為:成員屬性。類中的函數(shù)稱為:成員方法。

    示例:

    class Person {
        public int age;//成員屬性 實(shí)例變量
        public String name;
        public String sex;
        public void eat() {//成員方法
            System.out.println("吃飯!");
        }
        public void sleep() {
            System.out.println("睡覺(jué)!");
        }
    }
    

    類的實(shí)例化:用類類型創(chuàng)建對(duì)象的過(guò)程,稱為類的實(shí)例化

    類只是一個(gè)模型一樣的東西實(shí)例名稱有什么用,限定了類有哪些成員.

    一個(gè)類可以實(shí)例化出多個(gè)對(duì)象,實(shí)例化出的對(duì)象 占用實(shí)際的物理空間,存儲(chǔ)類成員變量

    做個(gè)比方。類實(shí)例化出對(duì)象就像現(xiàn)實(shí)中使用建筑設(shè)計(jì)圖建造出房子,類就像是設(shè)計(jì)圖,只設(shè)計(jì)出需要什么東西,但是并沒(méi)有實(shí)體的建筑存在,同樣類也只是一個(gè)設(shè)計(jì),實(shí)例化出的對(duì)象才能實(shí)際存儲(chǔ)數(shù)據(jù),占用物理空間

    class Person {
        public int age;//成員屬性 實(shí)例變量
        public String name;
        public String sex;
        public void eat() {//成員方法
            System.out.println("吃飯!");
        }
        public void sleep() {
            System.out.println("睡覺(jué)!");
        }
    }
    public class TestDemo {
        public static void main(String[] args) {
            Person person = new Person();//通過(guò)new實(shí)例化對(duì)象
            person.eat();//成員方法調(diào)用需要通過(guò)對(duì)象的引用調(diào)用
            person.sleep();
            //產(chǎn)生對(duì)象     實(shí)例化對(duì)象
            Person person2 = new Person();
            Person person3 = new Person();
        }
    

    實(shí)例名稱有什么用_實(shí)例名稱 flash 作用_實(shí)例名稱有什么用

    }

    3. 類的成員

    類的成員可以包含以下:字段、方法、代碼塊、內(nèi)部類和接口等。且分為普通的成員變量( int age)和靜態(tài)成員變量( int age)

    3.1 字段/屬性/成員變量

    在類中, 但是方法外部定義的變量. 這樣的變量我們稱為 “字段” 或 “屬性” 或 “成員變量”(三種稱呼都可以, 一般不會(huì)嚴(yán)格區(qū)分).

    class Person {
        public String name;   // 字段
        public int age;
    }
    class Test {
        public static void main
                (String[] args) {
            Person person = new Person();
            System.out.println(person.name);
            System.out.println(person.age);
        }
    }
    

    簡(jiǎn)單來(lái)說(shuō) 字段=屬性=成員變量 他們是方法外部定義的“變量”。

    注意事項(xiàng):

    使用 . 訪問(wèn)對(duì)象的字段.

    “訪問(wèn)” 既包含讀, 也包含寫.

    對(duì)于一個(gè)對(duì)象的字段如果沒(méi)有顯式設(shè)置初始值, 那么會(huì)被設(shè)置一個(gè)默認(rèn)的初值.

    默認(rèn)值規(guī)則:

    對(duì)于各種數(shù)字類型, 默認(rèn)值為 0.

    對(duì)于 類型, 默認(rèn)值為 false.

    對(duì)于引用類型(, Array, 以及自定制類), 默認(rèn)值為 null

    3.1.1認(rèn)識(shí) null

    null 在 Java 中為 “空引用”, 表示不引用任何對(duì)象. 類似于 C 語(yǔ)言中的空指針. 如果對(duì) null 進(jìn)行 . 操作就會(huì)引發(fā)異常.

    3.1.2字段就地初始化

    class Person {
        public String name = "張三";
        public int age = 18;
    }
    public class TestDemo {
        public static void main(String[] args) {
            Person person = new Person();
            System.out.println(person.name);
            System.out.println(person.age);
        }
    }
    

    3.2 方法 ()

    就是我們?cè)?jīng)講過(guò)的方法.

    用于描述一個(gè)對(duì)象的行為.

    class Person {
        public int age = 18;
        public String name = "張三";
        public void show() {
            System.out.println("我叫" + name + ", 今年" + age + "歲");
        }
    }
    public class TestDemo {
    

    實(shí)例名稱 flash 作用_實(shí)例名稱有什么用_實(shí)例名稱有什么用

    public static void main(String[] args) { Person person = new Person(); person.show(); } }

    這樣的 show 方法是和 實(shí)例相關(guān)聯(lián)的. 如果創(chuàng)建了其他實(shí)例, 那么 show 的行為就會(huì)發(fā)生變化

    class Person {
        public int age = 18;
        public String name = "張三";
        public void show() {
            System.out.println("我叫" + name + ", 今年" + age + "歲");
        }
    }
    public class TestDemo {
        public static void main(String[] args) {
            Person person2 = new Person();
            person2.name = "李四";
            person2.age = 20;
            person2.show();
        }
    }
    

    3.3 關(guān)鍵字

    1、修飾屬性

    2、修飾方法

    3、代碼塊(本課件中會(huì)介紹)

    4、修飾類(后面講內(nèi)部類會(huì)講到)

    a) 修飾屬性,Java靜態(tài)屬性和類相關(guān), 和具體的實(shí)例無(wú)關(guān). 換句話說(shuō), 同一個(gè)類的不同實(shí)例共用同一個(gè)靜態(tài)屬性.

    class TestDemo1{
        public int a;
        public static int count;
    }
    public class TestDemo {
        public static void main(String[] args) {
            TestDemo1 t1 = new TestDemo1();
            t1.a++;
            TestDemo1.count++;
            System.out.println(t1.a);
            System.out.println(TestDemo1.count);
            System.out.println("============");
            TestDemo1 t2 = new TestDemo1();
            t2.a++;
            TestDemo1.count++;
            System.out.println(t2.a);
            System.out.println(TestDemo1.count);
        }
    }
    

    示例代碼內(nèi)存解析:count被所修飾,所有類共享。且不屬于對(duì)象,訪問(wèn)方式為:類名 . 屬性。

    t1和t2在堆上的地址調(diào)用不一樣 而在堆調(diào)用方法區(qū)時(shí)確實(shí)調(diào)用的同一個(gè)對(duì)象count

    相當(dāng)于t2中的count還是t1中的count。

    b) 修飾方法

    實(shí)例名稱有什么用_實(shí)例名稱 flash 作用_實(shí)例名稱有什么用

    如果在任何方法上應(yīng)用 關(guān)鍵字,此方法稱為靜態(tài)方法。

    class TestDemo{
        public int a;
        public static int count;
        public static void change() {
            count = 100;
            //a = 10; error 不可以訪問(wèn)非靜態(tài)數(shù)據(jù)成員
        }
    }
    public class Main{
        public static void main(String[] args) {
            TestDemo.change();//無(wú)需創(chuàng)建實(shí)例對(duì)象 就可以調(diào)用
            System.out.println(TestDemo.count);
        }
    }
    

    輸出結(jié)果:100

    注意事項(xiàng):

    1.在類的成員方法中不可以用來(lái)創(chuàng)建變量,只能在類里面定義和方法外部定義。

    例如:

    class Person {
        public void sleep() {
            static int size = 0;//error
            System.out.println("睡覺(jué)!");
        }    
    }
    

    3.4方法調(diào)用易錯(cuò)區(qū)分

    靜態(tài)變量可以不用實(shí)例化(new),可以直接通過(guò)類.來(lái)進(jìn)行操作:

    class TestDemo1{
        public int a;
        public static int count;
    }
    public class TestDemo {
        public static void main(String[] args) {
            TestDemo1.count = 10;
            System.out.println(TestDemo1.count);
        }
    }
    

    在類中普通方法的內(nèi)部 不能夠定義靜態(tài)的變量。

    在普通方法內(nèi)部可以調(diào)用靜態(tài)方法

    在靜態(tài)方法內(nèi)部可以調(diào)用靜態(tài)方法 但是不可以調(diào)用普通方法

    4. 封裝

    什么叫封裝?

    在我們寫代碼的時(shí)候經(jīng)常會(huì)涉及兩種角色: 類的實(shí)現(xiàn)者和類的調(diào)用者.

    封裝的本質(zhì)就是讓類的調(diào)用者不必太多的了解類的實(shí)現(xiàn)者是如何實(shí)現(xiàn)類的, 只要知道如何使用類就行了.

    這樣就降低了類使用者的學(xué)習(xí)和使用成本, 從而降低了復(fù)雜程度.

    4.1 實(shí)現(xiàn)封裝

    / 這兩個(gè)關(guān)鍵字表示 “訪問(wèn)權(quán)限控制” .

    被 修飾的成員變量或者成員方法, 可以直接被類的調(diào)用者使用.

    被 修飾的成員變量或者成員方法, 不能被類的調(diào)用者使用.

    實(shí)例名稱有什么用_實(shí)例名稱 flash 作用_實(shí)例名稱有什么用

    class Person {
        private String name = "張三";
        private int age = 18;
        public void show() {
            System.out.println("我叫" + name + ", 今年" + age + "歲");
        }
    }
    class Test {
        public static void main(String[] args) {
            Person person = new Person();
            person.show();
        }
    }
    

    此時(shí)字段已經(jīng)使用 來(lái)修飾. 類的調(diào)用者(main方法中)不能直接使用. 而需要借助 show 方法. 此時(shí)類的使用者就不必了解 類的實(shí)現(xiàn)細(xì)節(jié).

    同時(shí)如果類的實(shí)現(xiàn)者修改了字段的名字, 類的調(diào)用者不需要做出任何修改(類的調(diào)用者根本訪問(wèn)不到 name, age這樣的字段).

    注意事項(xiàng):

    不光能修飾字段, 也能修飾方法

    通常情況下我們會(huì)把字段設(shè)為 屬性, 但是方法是否需要設(shè)為 , 就需要視具體情形而定. 一般我們希望一個(gè)類只提供 “必要的” 方法, 而不應(yīng)該是把所有的方法都無(wú)腦設(shè)為 .

    系統(tǒng)自動(dòng)封裝方法:

    結(jié)果演示:

    4.2 和方法

    當(dāng)我們使用 來(lái)修飾字段的時(shí)候, 就無(wú)法直接使用這個(gè)字段了.

    而是要使用set和get方法來(lái)引用他

    class Person {
        private String name;//實(shí)例成員變量
        private int age;
        public void setName(String name){
            //name = name;//不能這樣寫
            this.name = name;//this引用,表示調(diào)用該方法的對(duì)象
        }
        public String getName(){
            return name;
        }
        public void show(){
            System.out.println("name: "+name+" age: "+age);
        }
    }
    public class TestDemo {
        public static void main(String[] args) {
            Person person = new Person();//類的實(shí)例化
            person.setName("caocao");//通過(guò)setName調(diào)用類中private中的name
            String name = person.getName();//創(chuàng)建字符串變量name賦值為getName中獲取的值  多余
            System.out.println(name);                                                //多余可省
            person.show();//調(diào)用類中的方法
        }
    }
    

    實(shí)例名稱有什么用_實(shí)例名稱 flash 作用_實(shí)例名稱有什么用

    最簡(jiǎn)寫法:

    即在主函數(shù)main這里我們用.();來(lái)引用我們的類

    用.show來(lái)輸出我們的結(jié)果

    注意事項(xiàng):

    即為 方法, 表示獲取這個(gè)成員的值.

    即為方法, 表示設(shè)置這個(gè)成員的值 .

    當(dāng)set方法的形參名字和類中的成員屬性的名字一樣的時(shí)候,如果不使用this, 相當(dāng)于自賦值. this 表示當(dāng)前實(shí)例的引用.

    不是所有的字段都一定要提供 / 方法, 而是要根據(jù)實(shí)際情況決定提供哪種方法.

    在 IDEA 中可以使用 alt + (或者 alt + F12) 快速生成 / 方法. 在 中可以使用鼠標(biāo)右鍵菜單 -> 源代碼操作 中自動(dòng)生成 / 方法.

    5.構(gòu)造方法 5.1 基本語(yǔ)法

    每一個(gè)類必須有一個(gè)構(gòu)造方法 如果我們沒(méi)寫 idea會(huì)自動(dòng)幫我們寫一個(gè)不帶參數(shù)的構(gòu)造方法

    構(gòu)造方法是我們調(diào)用類 并使用它更方便了

        class Person {
        private String name;//實(shí)例成員變量
        private int age;
        private String sex;
        //默認(rèn)構(gòu)造函數(shù) 構(gòu)造對(duì)象
    public Person() {
        this.name = "caocao";
        this.age = 10;
        this.sex = "男";
    }
    //帶有3個(gè)參數(shù)的構(gòu)造函數(shù)  注意這里時(shí)public 不是private
    public Person(String name,int age,String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    public void show(){
        System.out.println("name: "+name+" age: "+age+" sex: "+sex);
    }
    

    我們從:

    Person p1 = new Person();//調(diào)用不帶參數(shù)的構(gòu)造函數(shù) 如果程序沒(méi)有提供會(huì)調(diào)用不帶參數(shù)的構(gòu)造函數(shù)
    p1.name =  "qiqi";
    p1.age = 18;
    p1.sex = "女";
    p1.show();
    

        Person p2 = new Person3("zhangfei",80,"男");//調(diào)用帶有3個(gè)參數(shù)的構(gòu)造函數(shù)
        p2.show();
    

    對(duì)比兩個(gè)代碼內(nèi)容可以看出,我們用構(gòu)造方法來(lái)調(diào)用我們的類并賦值比我們不使用構(gòu)造方法來(lái)賦值要方便的多。

    構(gòu)造方法是一種特殊方法, 使用關(guān)鍵字new實(shí)例化新對(duì)象時(shí)會(huì)被自動(dòng)調(diào)用, 用于完成初始化操作.

    分辨是普通方法還是構(gòu)造方法:

    構(gòu)造方法就是方法里面用了**this.**來(lái)賦初值且方法名稱和類相同(用的是) 構(gòu)造方法可以無(wú)參數(shù) 但是一旦有一個(gè)構(gòu)造方法有了參數(shù) 那么其余的構(gòu)造方法就至少得有一個(gè)參數(shù)32

    new 執(zhí)行過(guò)程:

    為對(duì)象分配內(nèi)存空間

    調(diào)用對(duì)象的構(gòu)造方法

    語(yǔ)法規(guī)則:

    1.方法名稱必須與類名稱相同

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有