JAVA 静态嵌套类、内部类

说道静态嵌套类,因为有static修饰那么顾名思义,它就是属于类本身的,那么在分,如果有private修饰,说明该嵌套类是私有成员,不能再外部创建(感觉就像私有方法一样),只能被类内部的方法访问创建。而public修饰的静态嵌套类则属于公有成员,所以可以在外部被访问,而被访问的方法与一般的静态成员也没有区别,类名.静态嵌套类名。

public class Invoice{
        public static class Item{
                  private String des;
        }
        private ArrayList<Item>items = new ArrayList<>();
        public void add(Item item){
                 item.add(item)
        }
}
创建静态内部类

Invoice.Item newItem = new Invoice.Item();
myInvoice.add(newItem);

那么内部类有什么区别呢?

内部类没有static修饰,所以说内部类应该是属于对象实例的。这也是为什么内部类对象都有自己外部类对象的引用的原因,因为每个内部类对象都有其所属的外部类对象,内部类就像是一个类的内部成员一样,每一个内部成员都是属于实例化对象的而不是类本身,所以同样的内部类也属于实例化对象。因此在外部创建内部类的对象的时候也只能有对象去创建,形式就是:对象名.new 内部类()。

public class Network{
public class Member{
private String name;
public Member(String na){
this.name = na;
}
public void leave(){
members.remove(this);
}
}
private ArrayList<Member>members;
public Member enroll(String name){
Member newMember = new Member(name);
members.add(newMember);
return newMember;
}
}
Network myNet= new Network();
Network.member job = myNet.enroll("JOB");
上面我们创建了一个JOB的人加入了myNet,那么job就属于myNet对象。现在job想离开myNet只要调用leave()就好了。

job.leave()
这里leave()执行了

members.remove(this)
实际上相当于

outlier.members.remove(this)
outlier指明了this 所属的外部类对象。也就是job所属的外部类对象myNet.


如有不同理解欢迎指导~






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值