内部类的创建以及规范

一、成员内部类

1.内部类在外部使用时,无法直接进行实例化,需要借由外部类信息才能完成实例化。

2.内部类的访问修饰符,可以任意,但是访问范围会受到影响。

3.内部类可以直接访问外部类的成员,如果出现同名属性,优先访问内部类中定义的。

4.可以使用外部类.this.成员的方法,访问外部类中同名的信息。

5.外部类访问内部类信息,需要通过内部类实例,无法直接访问。‘

6.内部类编译后.class文件命名:外部类$内部类.class。

 

二、静态内部类

1.静态内部类,只能直接访问外部类的静态成员,如果需要调用非静态成员,可以通过对象实例。

2.静态内部类对象实例时,可以不依赖于外部类对象。

3.可以通过外部类.内部类.静态成员的方法,访问内部类中的静态成员。

4.当内部类属性与外部类属性同名时,默认直接调用内部类中的成员;

如果选哟访问外部类中的静态属性,则可以通过 外部类.属性  的方法;

如果需要 访问外部类中的非静态属性,则可以通过  new 外部类().属性  的方法;

 

三、方法内部类

1.定义在方法内部,作用范围也在方法内。

2.和方法内部成员使用规则一样,class前面不可以添加public、private、protected、static。

3.类中不能包含静态成员。

4.类中可以包含final、abstract修饰的成员。

 

四、匿名内部类

1.匿名内部类中没有类型名称、实例对象名称。

2.编译后的文件命名:外部类$数字.class。

3.无法使用private、public、protected、abstract、static修饰。

4.无法编写构造方法,可以添加构造代码块。

5.不能出现静态成员。

6.匿名内部类可以实现接口也可以继承父类,但是不能兼得。

 

 

案例:

Ball类

public abstract class Ball{
//创建抽象方法play():void
public abstract void play();
}

 

BallTest类

//创建类BallTest
public class BallTest{
    // 创建成员内部类Inner_m
    public class Inner_m extends Ball{
        public void play(){
            System.out.println("成员内部类:");
            System.out.println("打篮球");
        }
    }

    // 创建方法内部类
    public void info(){
        class Inner_f extends Ball{
            public void play(){
                System.out.println("*************");
                System.out.println("方法内部类:");
                System.out.println("打乒乓球");
            }
        }
        Inner_f inner_f=new Inner_f();
        inner_f.play();
    }

    // 定义一个方法void playBall(Ball ball),调用play()方法
    public void playBall(Ball ball){
        ball.play();
    }
}

 

Test类

//测试类
public class Test {

    public static void main(String[] args) {
        //完成成员内部类内部测试
     BallTest.Inner_m inner_m=new BallTest().new Inner_m();
     inner_m.play();
        //完成方法内部类测试
     BallTest ballTest=new BallTest();
     ballTest.info();
        //完成匿名内部类测试
     ballTest.playBall(new Ball() {
         @Override
         public void play() {
             System.out.println("************");
             System.out.println("匿名内部类");
             System.out.println("打排球");
         }
     });
    }

}

 

posted @ 2024-01-04 16:07  她的回眸一直很美  阅读(139)  评论(0)    收藏  举报