Java内部类简介说明

java 文章 2022-07-22 10:40 328 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