Java 内部类

基础概念:将一个类的定义放在另一个类的定义内部

1.一般内部类

// 1、一般内部类
// 闭包: 自给自足,提高变量生命周期
class Outer {
    int i = 20;
    
    private void outerPrint() {
        // 可以通过内部类的对象调用内部类中的私有方法的
        // new Inner().print();
        System.out.println("外部类的方法");
    }
    
    public class Inner {
        int i = 100;
        public Inner() {
            System.out.println("内部类实例化");
        }
        
        void print() {
            // 调用外部类的私有方法
            outerPrint();
            System.out.println("内部类的变量 i:"+Inner.this.i);
            System.out.println("外部类的变量 i:"+Outer.this.i);
            System.out.println(i);
        }
    }
}

如何创建内部类 以及使用内部类的方法:   使用.new InnerClass();

// 创建外部类对象
        Outer outer = new Outer();
        // 通过外部类创建内部类对象
        Outer.Inner inner1 = outer.new Inner();
        // 直接创建
        Outer.Inner inner2 = new Outer().new Inner();
        // 调用内部类中的方法
        inner2.print();
View Code

 

内部类可以调用外部类的属性

 

2.静态内部类 又称嵌套内部类 ☆☆☆☆

// 2、嵌套内部类 -> 静态内部类
class Outer1 {
    static int  i;
    static class Inner {
        
        public Inner() {
            System.out.println("-----------------");
        }
         
        static int i = 10;
        void print() {
            System.out.println("静态内部类中的方法"+i);
        }
    }
    
    static class Inner1 {
        int i = 10;
        void print() {
            System.out.println("静态内部类中的方法"+i);
        }
    }
}

// 静态内部类才能被外部类继承
class Child extends Outer1.Inner {
    
}

使用方法:

Outer1.Inner inner3 = new Outer1.Inner();

 

3.匿名内部类

4.局部内部类 (在一个类的方法里面定义类)

 

能做什么

解决的问题:
1.静态内部类 继承,这样就可以只继承类的一部分功能;
2.内部类可以定义多个,最多65535
内部类和外部类都可以继承一个类 这样就解决了多继承的一种方案;

参考目录:https://www.cnblogs.com/chenssy/p/3388487.html

 

posted @ 2019-09-17 20:39  maanshancss  阅读(133)  评论(0编辑  收藏  举报