欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java面向?qū)ο笾畠?nèi)部類詳解

 更新時間:2022年10月04日 09:52:16   作者:館主阿牛  
在 Java 中,允許一個類的定義位于另一個類的內(nèi)部,前者稱為內(nèi)部類,后者稱為外部類。這篇文章將總結(jié)一下內(nèi)部類的使用,感興趣的可以了解一下

前言

在 Java 中,允許一個類的定義位于另一個類的內(nèi)部,前者稱為內(nèi)部類,后者稱為外部類。本篇博客將總結(jié)內(nèi)部類的使用。

內(nèi)部類概述

當一個事物的內(nèi)部,還有一個部分需要一個完整的結(jié)構(gòu)進行描述,而這個內(nèi)部的完整的結(jié)構(gòu)又只為外部事物提供服務(wù),那么整個內(nèi)部的完整結(jié)構(gòu)最好使用內(nèi)部類。

在 Java 中,允許一個類的定義位于另一個類的內(nèi)部,前者稱為內(nèi)部類,后者稱為外部類。

內(nèi)部類一般用在定義它的類或語句塊之內(nèi),在外部引用它時必須給出完整的名稱。

內(nèi)部類的名字不能與包含它的外部類類名相同;

內(nèi)部類的分類

內(nèi)部類分為:

成員內(nèi)部類( static 成員內(nèi)部類和非 static 成員內(nèi)部類)

局部內(nèi)部類(方法內(nèi),代碼塊內(nèi),構(gòu)造器內(nèi))

成員內(nèi)部類

一方面,作為外部類的成員:

  • 調(diào)用外部類的結(jié)構(gòu)。
  • 可以被 static 修飾(注意里面只能調(diào)用靜態(tài)方法,靜態(tài)屬性)。
  • 可以被4種不同的權(quán)限修飾。

另一方面,作為一個類:

  • 類內(nèi)可以定義屬性、方法、構(gòu)造器等。
  • 可以被final修飾,表示此類不能被繼承。
  • 可以被 abstract 修飾。
class People{
    String race;
    String countries;

    //靜態(tài)成員內(nèi)部類
    static class Man{
        String name;
        public Man(){
        }
        public void display(){
            System.out.println("3090yyds");
        }

    }

    // 非靜態(tài)成員內(nèi)部類
    class Women{
        String name;
        public Women(){
        }
        public void display(){
            System.out.println("化妝");
        }
    }
}

如何實例化成員內(nèi)部類的對象

package 內(nèi)部類;

???????public class Demo {
    public static void main(String[] args) {
        //創(chuàng)建Man對象(靜態(tài)的成員內(nèi)部類)
        People.Man m = new People.Man();
        m.display();
        //創(chuàng)建Women對象(非靜態(tài)的成員內(nèi)部類)
        People p = new People();
        People.Women w = p.new Women();
        w.display();
    }
}

如何在成員內(nèi)部類成員中區(qū)分調(diào)用外部類的對象

package 內(nèi)部類;

public class Demo {
    public static void main(String[] args) {
        //創(chuàng)建Women對象(非靜態(tài)的成員內(nèi)部類)
        People p = new People();
        People.Women w = p.new Women();
        w.display("a");
    }
}

class People{
    String name = "niu";
    String countries;
    public void eat(){
        System.out.println("吃飯");
    }
    // 非靜態(tài)成員內(nèi)部類
    class Women{
        String name = "aniu";
        public Women(){
        }
        public void eat(){
            System.out.println("吃蔬菜");
        }
        public void display(String name){
            System.out.println("化妝");
            System.out.println(name); //方法的形參
            System.out.println(this.name); //內(nèi)部類的屬性
            System.out.println(People.this.name); //外部類的屬性
            this.eat(); //內(nèi)部類的方法
            People.this.eat(); // 外部類的方法
        }
    }
}

局部內(nèi)部類

局部內(nèi)部類可以在方法內(nèi),代碼塊內(nèi),構(gòu)造器內(nèi)

class Animal{ 
// 局部內(nèi)部類
    // 構(gòu)造器內(nèi)
    Animal(){
        class Dog{
            
        }
    }
    
    // 代碼塊內(nèi)
    {
        class Cat{
            
        }
    }
    
    // 方法內(nèi)
    public void method(){
        class Bird{
            
        }
    }
}

開發(fā)中局部內(nèi)部類的使用

我們在開發(fā)中局部內(nèi)部類使用較多,比如,我們需要一個方法返回實現(xiàn)了某個接口的類的對象,此時方法內(nèi)自然就需要一個內(nèi)部類實現(xiàn)接口!

例:

 // 返回一個實現(xiàn)了Comparable接口的類的對象
    public Comparable getComparable(){
        // 創(chuàng)建一個實現(xiàn)了Comparable接口的類 ---局部內(nèi)部類
        class MyComparable implements Comparable{
            @Override
            public int compareTo(Object o) {
                return 0;
            }
        }
        return new MyComparable();   // 非匿名內(nèi)部類的匿名對象
    }

或者是這樣

 // 返回一個實現(xiàn)了Comparable接口的類的對象
    public Comparable getComparable(){     
        return new Comparable() {
            @Override
            public int compareTo(Object o) {
                return 0;
            }
        };  // 匿名內(nèi)部類的匿名對象

到此這篇關(guān)于Java面向?qū)ο笾畠?nèi)部類詳解的文章就介紹到這了,更多相關(guān)Java內(nèi)部類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Eclipse 使用Maven構(gòu)建SpringMVC項目

    Eclipse 使用Maven構(gòu)建SpringMVC項目

    本文主要介紹在Eclipse下創(chuàng)建Maven項目構(gòu)建SpringMVC框架的過程,講解的比較詳細,需要的朋友可以參考下。
    2016-06-06
  • 通過System.getProperty配置JVM系統(tǒng)屬性

    通過System.getProperty配置JVM系統(tǒng)屬性

    這篇文章主要介紹了通過System.getProperty配置JVM系統(tǒng)屬性,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Java反射 JavaBean對象自動生成插入,更新,刪除,查詢sql語句操作

    Java反射 JavaBean對象自動生成插入,更新,刪除,查詢sql語句操作

    這篇文章主要介紹了Java反射 JavaBean對象自動生成插入,更新,刪除,查詢sql語句操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java中的常用輸入輸出語句的操作代碼

    Java中的常用輸入輸出語句的操作代碼

    這篇文章主要介紹了Java中的常用輸入輸出語句的操作代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • java的Jackson將json字符串轉(zhuǎn)換成泛型List

    java的Jackson將json字符串轉(zhuǎn)換成泛型List

    這篇文章主要介紹了java的Jackson將json字符串轉(zhuǎn)換成泛型List ,這里整理了詳細的代碼,有需要的小伙伴可以參考下。
    2017-02-02
  • JDBC獲取數(shù)據(jù)庫連接的5種方式實例

    JDBC獲取數(shù)據(jù)庫連接的5種方式實例

    JDBC是一種用于執(zhí)行SQL語句的JavaAPI,為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成,提供了諸如查詢和更新數(shù)據(jù)庫中數(shù)據(jù)的方法,這篇文章主要給大家介紹了關(guān)于JDBC獲取數(shù)據(jù)庫連接的5種方式,需要的朋友可以參考下
    2022-06-06
  • 分析java中全面的單例模式多種實現(xiàn)方式

    分析java中全面的單例模式多種實現(xiàn)方式

    單例模式是一種常用的軟件設(shè)計模式,單例對象的類只能允許一個實例存在。許多時候整個系統(tǒng)只需要擁有一個的全局對象,有利于協(xié)調(diào)系統(tǒng)整體的行為。比如在某個服務(wù)器程序中,該服務(wù)器的配置信息存放在一個文件中。本文將介紹它的思想和多種實現(xiàn)方式
    2021-06-06
  • mybatis快速入門學習教程新手注意問題小結(jié)

    mybatis快速入門學習教程新手注意問題小結(jié)

    MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的持久層框架。接下來通過本文給大家介紹mybatis快速入門學習教程新手注意問題小結(jié),需要的朋友可以參考下
    2017-02-02
  • javabean?中使用@Transient屬性處理臨時字段

    javabean?中使用@Transient屬性處理臨時字段

    @Transient表示該屬性并非一個到數(shù)據(jù)庫表的字段的映射,ORM框架將忽略該屬性,本文給大家介紹javabean?中臨時字段的處理:@Transient,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • SpringBoot使用@ResponseBody返回圖片的實現(xiàn)

    SpringBoot使用@ResponseBody返回圖片的實現(xiàn)

    這篇文章主要介紹了SpringBoot使用@ResponseBody返回圖片的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論