Java内部类简介说明

java 文章 2022-07-22 10:40 520 0 全屏看文

AI助手支持GPT4.0

转自:

http://www.java265.com/JavaCourse/202204/3129.html

下文笔者讲述Java内部类的简介说明,如下所示:

内部类的简介

我们将在其他类中的类称之为“内部类”

内部类的定义位置:
     定义在类中方法外的类
成员内部类可以使用不同的修饰关键字进行修饰,不同的修饰关键字会生成不同的访问方式

内部类的定义方法

class 外部类 {
// 外部类的成员位置
    class 内部类{
    // 内部类的成员位置
    }
}

例:内部类定义

class Person { //外部类
    String name;
    class Heart { //内部类
        // 成员
    }
}

创建内部类对象的方法

外部类 外部类对象名 = new 外部类();
外部类.内部类 内部类对象名 = 外部类对象名.new 内部类();

简写方式:
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();

例:

//外部类
class Outer {
    // 外部类成员变量
    private  String outer_filed = "我是外部类成员变量";
    //成员内部类
    class Inner {
        // 内部类成员变量
        private String inner_filed = "我是内部类成员变量";
        //内部类的成员方法
        public void inner_method() {
            System.out.println("inner_method....run... " + inner_filed );
        }
    }
    // 外部类成员方法
    public void outer_method(){
        System.out.println("outer_method....run... " + outer_filed );
    }
}
 // 测试类
 public class InnerDemo {    
   public static void main(String[] args) {        
     // 创建外部类对象         
     Outer o  = new Outer();        
     // 创建内部类对象        
     Outer.Inner i = p.new Inner();//表示通过外部类对象创建内部类对象        
     // 调用外部类方法        
     i.outer_method();        
     // 调用内部类方法        
     i.inner_method();        
   }
 }
注意事项:
    内部类是一个独立的类
    编译之后的内部类会被编译成独立的.class文件,类的名称会使用“类名和$符号”组成 
 例:Outer$Inner.class

注意事项:
 1.当一个内部类被私有化后,这个内部类就无法在外部进行访问
 2.私有成员的内部类也是外部类的成员
 3.外部类可以访问私有成员方法,本类之外无法访问
 4.私有成员内部类,只能在外部类中其他成员方法中创建成员内部类对象,通过对象的方法访问"私有成员内部类"的成员

例:

//外部类
class Outer {
    // 外部类成员变量
    private  String outer_filed = "我是外部类成员变量";

    //被私有的成员内部类
    private class Inner {
        // 内部类成员变量
        private String inner_filed = "我是内部类成员变量";
        //内部类的成员方法
        public void inner_method() {
            System.out.println("inner_method....run... " + inner_filed );
        }
    }
    // 外部类成员方法
    public void outer_method(){
        System.out.println("outer_method....run... " + outer_filed );
    }
    /*
        被私有的外部类成员方法:
            当前外部类的成员方法被私有了,因此此方法外界无法访问。但是本类中是可以正常访问的。       我们可以在本类中定义一个公开的方法来调用私有的方法,然后创建对象调用公开的方法即可访问。
    */
    // 外部类公开的方法
    public void pub_method(){
        // 此公开方法可以访问本类私有的成员
        Inner inner = new Inner();
        inner.inner_method();

        // 可以在此方法内访问创建私有内部类的对象,然后调用内部类方法,最后通过外部类对象调用此       // 方法即可完成私有成员内部类方法的间接调用
    }
}
 // 测试类
 public class InnerDemo {    
   public static void main(String[] args) {        
     // 创建外部类对象         
     Outer o  = new Outer();        
     // 调用外部类访问私有内部类的公开方法 , 间接调用私有成员内部类
     o.pub_method();
   }
 }

被静态的成员内部类

外部类.内部类 变量名 = new 外部类.内部类();

例:

//外部类
class Outer {
    // 外部类成员变量
    private  String outer_filed = "我是外部类成员变量";
    //被静态的成员内部类
    static class Inner {
        // 内部类成员变量
        private String inner_filed = "我是内部类成员变量";
        //内部类的成员方法
        public void inner_method() {
            System.out.println("inner_method....run... " + inner_filed );
        }
    }
    // 外部类成员方法
    public void outer_method(){
        System.out.println("outer_method....run... " + outer_filed );
    }
}
 // 测试类
 public class InnerDemo {    
   public static void main(String[] args) {        
     // 创建内部类对象         
     Outer.Inner oi = new Outer.Inner();
     // 调用内部类方法
     oi.inner_method();
   }
 }

静态成员内部类的静态方法

//外部类
class Outer {
    // 外部类成员变量
    private  String outer_filed = "我是外部类成员变量";
    //被静态的成员内部类
    static class Inner {
        // 内部类成员变量
        private String inner_filed = "我是内部类成员变量";
        //内部类的成员方法
        public static void static_inner_method() {
            System.out.println("静态内部类的静态成员方法static_inner_method....run... " );
        }
    }
}
 // 测试类
 public class InnerDemo {    
   public static void main(String[] args) {        
     // 直接使用内部类名访问         
     Outer.Inner.static_inner_method();
   }
 }
-EOF-

AI助手支持GPT4.0


国内超级便宜服务器

摸鱼人热门新闻聚合

钻级赞助商 我要加入

开发者在线工具

第三方支付技术请加QQ群

相关文章
零基础学Java(10)面向对象-使用LocalDate类完成日历设计
细说 Deque 以及用法和注意点
明明实现序列化了还提示must implement java.io.Serializable
java之map大白话
HTTPClient示例分享
随便看看
文档中有失效的代码片段链接! 452
微信红包封面序列号怎么免费领取? 593
身份信息被盗用注册公众号,现在注册到一半无法注册自己的公众号怎么办? 597
想问下用云开发如何限制button每天点击的次数? 542
火星船票怎么申请? 781
微信商户号申请扫码领券的批次号是怎么增加? 555
使用已经授权支付目录请求JSAPI支付一直提示当前URL未注册,什么原因?急! 517
配置很好的电脑,微信小程序电脑端速度奇慢,小游戏电脑端很快,为什么?(有视频为证) 732
请问零食小程序 云服务器需要购买什么配置的呢? 571
小程序IDE如何快速开通静态网站托管? 575