内部类总结

7.1内部类

        在java中只能实现单继承,但是对于一些特殊情况需要继承多个类时就无法解决,通过接口只能实现功能的扩展,没有办法体现类之间的关系。此时就产生了内部类的语法结构。改语法结构实际上是对单继承的补充。

7.1.1内部类的分类

        1.成员内部类

        成员内部类与成员变量或者是方法属于同级,在声明时直接在类的内部声明一个class即可。

public class OuterClass {
    private int num = 10 ;
    private static int AGE = 30 ;
    public class InnerClass {
        private int a = 10 ;
        
        private int num = 10 ;
        
        public void show() {
            num = 20 ;
            sout("我是内部类的show方法") ;
        }
    }
}

public static void main(String[] args) {
    //步骤1:实例外部类
    OuterClass outerClass = new OuterClass() ;
    outerClass.num = 20 ;
    //步骤2:实例化内部类
    //外部类.内部类 对象名 = 外部类对象名.new 内部类名() ;
    OuterClass.InnerClass innerClass = outerClass.new InnerClass() ;
    innerClass.show();
}

成员内部类能够直接访问外部类的属性和方法,当内部类需要访问外部的属性时,可以“外部类的类名.this.属性”来进行获取。

2.局部内部类

        定义在方法内部,主要是为了能够为当前方法进行增强。在局部变量位置定义。

public class OuterClass {
    private int num = 10 ;
    private static int AGE = 30 ;
    
    public void show() {
        public class InnerClass {
            private int a = 10 ;
        
            private int num = 10 ;
        
            public void show() {
                 sout("我是内部方法") ;
            }
        }
        InnerClass innerClass = new InnerClass() ;
        innerClass.show() ;
    }
}
3.静态内部类

        在类的内部又定义了一个static修饰的静态类。

public class OuterClass {
    private int num = 10 ;
    private static int AGE = 30 ;
    
    public static class InnerClass {
        //属性
        
        //方法
    }
}

public static void main(String[] args) {
    OuterClass.InnerClass.属性/方法 ;
    //在静态类中包含实例方法或者是属性
    InnerClass innerClass = new InnerClass() ;
    innerClass.属性/方法 ;
}

4.匿名内部类

面向对象或者是接口。

// 抽象类/接口 对象名 = new 抽象类/接口 {
    //实现抽象类/接口的抽象方法
    @Override
    public void show() {    //由抽象类或接口声明的。
         //方法实现。
    }
} ;

对象名.show() ;

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值