内部类1——普通内部类

1、用途

内部类是指类的内部再定义类,及类的嵌套,几乎所有的面向对象语言都提供这种结构。很显然,内部类会破坏结构,但为什么要提供内部类呢。实际内部类所要解决的问题就是,如何轻松地访问类中的私有成员

假设现在有一个Outter类,一个Inner类,Inner类的对象要访问Outter类对象的私有属性。

2、先来看下不用内部类的写法

class Outter{
    private String msg;
    
    public Outter(String msg) { //构造函数给msg赋值
        this.msg = msg;
    }
    
    public String getter() {  //定义一个getter方法,由于向Inner下的getInfo 方法返回msg的值
        return this.msg;
    }
    
    public void func(Inner inner) {  //调用inner类的方法,要传Inner类的实例化对象
        System.out.println(inner.getInfo());  
    }
}


class Inner{
    private Outter outter;
    
    public Inner(Outter outter) { //通过构造函数把Outter类的对象,传递给outter成员
        this.outter = outter;
    }
    
    
    public String getInfo() {
        return this.outter.getter();//通过Inner类中outter成员访问Inner类中getter
    }
}

public class Demo{

    public static void main(String[] args) {
        Outter o = new Outter("Nothing's gonna change my love for you");
        o.func(new Inner(o));
    }
}

由此可见,以上代买涉及非常多的引用传递

3、内部类的写法

class Outter{
    private String msg;      //定义一个private 成员
    
    public Outter(String msg) {
        this.msg = msg;
    }
    
    public void func() {
        Inner inner = new Inner();  //实例化一个内部类的对象
        System.out.println(inner.getInfo());  //调用内部类对象的getInfo()方法
    }
    
    class Inner{      //定义一该内部类
        public String getInfo() {
            return Outter.this.msg;  //内部类访问外部类的私有成员
        }
        
    }
}

public class Demo{

    public static void main(String[] args) {
        Outter o = new Outter("Nothing's gonna change my love for you");
        o.func();
    }
}

4、内部类对象的实例化方法

外部类名称.内部类名称 对象名称 = new 外部类构造方法().new 内部类构造方法();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值