内部类

作者: Yanl__ | 来源:发表于2019-11-20 20:51 被阅读0次

1.内部类的作用与使用场合
2.内部类的分类
3.非静态内部类
4.静态内部类
5.匿名内部类

1.内部类的作用与使用场合

2.内部类的分类

3.非静态内部类

i. 非静态内部类必须寄存在一个外部类对象里。因此,如果有一个非静态内部类对象那么一定存在对应的外部类对象。非静态内部类对象单独属于外部类的某个对象。
ii. 非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员。
iii. 非静态内部类不能有静态方法、静态属性和静态初始化块。
iv. 外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例。
v. 成员变量访问要点:
1.内部类里方法的局部变量:变量名。
2.内部类属性:this.变量名。
3.外部类属性:外部类名.this.变量名。

class Outer{
    private int age = 10;

    class Inner{  //  定义内部类
        int age =20; // 内部类的成员变量
        public void show(){
            int age = 30;  // 内部类方法里的局部变量
            System.out.println("内部类方法里的局部变量age:"+age);
            System.out.println("内部类的成员变量age:"+this.age);
            System.out.println("外部类的成员变量age:"+Outer.this.age);
        }
    }
}
public class TestInnerClass {
    public static void main(String[] args) {
        Outer.Inner inner = new Outer().new Inner();  // 外部类以外的地方使用非静态内部类
        inner.show();
    }
}
输出结果:
内部类方法里的局部变量age:30
内部类的成员变量age:20
外部类的成员变量age:10

4.静态内部类

4.1 定义方式

static class ClassName{
//类体
}

4.2 注意事项

  1. 当一个静态内部类对象存在,并不一定存在对应的外部类对象。 因此,静态内部类的实例方法不能直接访问外部类的实例方法。
  1. 静态内部类看做外部类的一个静态成员。 因此,外部类的方法中可以通过:“静态内部类.名字”的方式访问静态内部类的静态成员,通过 new 静态内部类()访问静态内部类的实例。
class Outer2{
    static class Inner{
        int age = 20;
    }

    public void fun1() {
        Inner inner1 = new Inner();
        System.out.println(inner1.age);
    }
}
public class TestStaticInnerClass {
    public static void main(String[] args) {
        Outer2 o2 = new Outer2();
        o2.fun1();
    }
}

5.匿名内部类

适合那种只需要使用一次的类。比如:键盘监听操作等等。

5.1 定义方式

new 父类构造器(实参类表)\实现接口(){
//匿名内部类类体
}
public class TestAnonymoushInnerClass {
    public static void testaa(AA a){
        a.aa();
    }
    public static void main(String[] args) {
        TestAnonymoushInnerClass.testaa(new AA() {  // 直接写匿名内部类
            @Override
            public void aa() {
                System.out.println("测试匿名内部类");
            }
        });
    }
}
interface AA{
    void aa();
}

1.匿名内部类没有访问修饰符
2.匿名内部类没有构造方法。

相关文章

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • Java学习——内部类

    内部类 一,成员内部类(包括静态内部类和非静态内部类) 非静态内部类可以直接访问外部类的成员,反之则不行 非静态内...

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

  • 内部类

    内部类 1.可以访问访问其外部类所有属性和方法,无需创建外部类对象 2.必须创建内部类对象,否则无法从外部类访问内...

  • Java 中的方法内部类

    Java 中的方法内部类 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内...

  • java——内部类

    内部类 定义: 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内...

  • java之面向对象5

    方法内部类: 简而言之就是定义在外部类的方法内的类。 方法内部类只在该方法的内部可见,即只在该方法内可以使用。 方...

  • Java 内部类

    1. 内部类 概念:在一个类的内部再定义一个完整的类内部类分为 4 类:成员内部类、静态内部类、局部内部类、匿名内...

网友评论

      本文标题:内部类

      本文链接:https://www.haomeiwen.com/subject/bxaoictx.html