Java中内部类?

本文详细介绍了Java中的内部类类型,包括成员内部类(类中的成员变量)、方法内部类(局部变量)、静态嵌套类(静态变量)以及匿名内部类。讲解了它们的定义、访问权限和相互之间的关系。
摘要由CSDN通过智能技术生成

●之前类中可以有变量和方法,今天开始在类中再添加一个元素类。

   将一个类声明/定义在另一个类的里面,里面的这个类就是---内部类  类里面的类。

   内部类---包含在类中的类就是内部类;

   外部类---包含内部类的类就是外部类;

    内部类编译后会形成一个新字节码文件【外部类名$内部类名.class】

1.成员内部类---相当于是java类中的成员变量

基本结构:

    public class TestClass{

              public class lnnerClass{

          }

}

TestClass---外部类

lnnerClass---成员内部类

(1)成员内部类可以使用任意的访问限制修饰符;

(2)成员内部类可以有实例变量、实例方法、构造方法、有静态元素;

(3)内部类的构造方法和内部类的实例方法

                 可以访问当前内部类的其他构造方法【new】

                 可以访问当前内部类的实例元素【对象/this可以省略对象和this】

(4)内部类的构造方法和内部类的实例方法

                  可以访问外部类的构造方法【new】

                  可以访问外部类的实例元素【对象/外部类名.this 可以省略】

                  可以访问外部类的静态元素【类名/对象/外部类名.this可以省略】

(5)外部类构造方法和实例方法

                  可以访问内部类构造方法

                  可以访问内部类实例元素【只能对象】

                   可以访问内部类静态元素【类名/对象】

外部类静态方法

                   不能访问内部类构造方法

                   不能访问内部类实例元素

                   可以访问内部类静态元素【类名】

(6)其他类中构造方法和实例方法和静态方法

                   可以访问内部类的构造方法【外部类对象.new内部类的构造方法】

                    可以访问内部类的实例元素【只能对象】

                    可以访问内部类的静态元素【类名/对象】

2.方法内部类---定义在方法中的类,相当于局部变量

基本格式:

      package com.wangxing.test2;
public class TestClass {
    public TestClass(){
         class  InnerClass1{
                
            }
    }
    public  void  testMethod(String canshu){
         class  InnerClass2{
            
        }
    }
    public static  void  testStaticMethod(String canshu){
         class  InnerClass3{
            
        }
    }

(1) 方法内部类不能使用任何访问限制修饰  ;

(2)方法内部类可以有实例变量/方法,构造方法;

(3)方法内部类的构造方法和实例方法

                 可以访问当前方法内部类中的构造方法【new】

                 可以访问当前方法内部类中的实例元素【对象/this  可以省略】

                 可以访问当前方法内部类中的静态元素【类名/对象/this  可以省略】

(4)方法内部类中访问当前方法中的局部变量【变量名称】,注意该局部变量是final修饰符修饰

(5)方法内部类的构造方法和实例方法

                    可以访问外部类的构造方法【new】

                    可以访问外部类的实例元素【对象/外部类名.this 可以省略】

                   可以访问外部类的静态元素【类名/对象/外部类名.this 可以省略】

(6)外部类是不能访问到方法内部类中的元素。

3.静态嵌套类---相当于是java类中的静态变量

基本格式:package com.wangxing.test3;
public class TestClass {
    public static class  InnerClass{
        
    }
}

(1)静态嵌套类可以使用任意的访问限制修饰符。

         静态嵌套类中可以有构造方法,实例变量/方法,类变量/方法。

(2)静态嵌套类的构造方法和实例方法

               可以访问当前内部类的其他构造方法【new】   

               可以访问当前内部类的实例元素【对象/this 可以省略对象和this】

               可以访问当前内部类的静态元素【对象/this/类名 可以省略对象和this/类名】

         静态嵌套类的静态方法   

                 可以访问当前内部类的其他构造方法

                  this不能使用

                  可以访问当前内部类的实例元素【对象】

                  可以访问当前内部类的静态元素【类名/对象 可以省略类名/对象】

(3)静态嵌套类的构造方法和实例方法和静态方法

                  可以访问外部类的构造方法【new】  

                  可以访问外部类的实例元素【对象】

                  可以访问外部类的静态元素【类名/对象 可以省略类名/对象】 

(4)外部类构造方法和实例方法和静态方法

                    可以访问内部类构造方法

                    可以访问内部类实例元素【只能对象】

                    可以访问内部类静态元素【类名/对象】

(5)其他类中

                  可以访问静态嵌套类的构造方法【new 外部类类名.静态嵌套类的构造方法】

                  可以访问内部类的实例元素【只能对象】

                  可以访问内部类的静态元素【类名/对象】 

4.匿名内部类---没有名字的java类,在不用创建出新类的情况下,构建出当前类/接口的子类,构建的子类没有名字,所以叫匿名内部类的基本格式:

package com.wangxing.test4;

public class Person {
    public  void  personInfo(){
        System.out.println("Person类的实例方法");
    }
}

                  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值