内部类_解释build()构造中使用静态内部类的原因

在“不定长多参数build()构造方式”中的内部build()类中为静态static内部类,为什么是静态内部类呢(准确来说其实build类为外部类),其实很简单,在这里稍微详细的给大家谈谈自己的理解,仅针对刚入java的小白,高手一定比我见解要深刻很准确,首先举个普通内部类的例子
class Outer {
	private String info ="hello word";
	class Inner{//内部类
		public void print(){//可以直接访问外部类的私有属性
			System.out.print(info);
		}
	}
	public void fun(){//通过内部类的实例化对象调用方法
public class Main {
	public static void main(String args[]){
		new Outer().fun();//调用
	}
}
以上程序中,Inter类作为Outer类的内部类存在,并且在外部类的fun()方法中直接实例化内部类的对象并调用print()方法。

缺点:正常一个类操作时,在类中最好只定义属性或方法,如果定义一个类的话,则肯定破坏了程序的一个结构。

优点:可以方便的访问外部类中的私有属性。


以上程序是没有static关键字的内部类,这样的内部类就是纯粹意义上的内部类,不能通过外部类或是外部类的实例调用内部类,所以build构造方法中不能使用普通的内部类作为build构造。

如果一个内部类使用了static关键字声明,则此内部类就可以称为外部类,可以直接通过

外部类.内部类

进行访问,例如

class Outer {
	private static String info ="hello word";//注意静态内部类访问的私有属性也必须是静态的
	static class Inner{//加static关键字的内部类
		public void print(){
			System.out.print(info);
		}
	}
	public void fun(){
		new Inner().print();
	}
}
public class Main {
	public static void main(String args[]){
		new Outer().fun();
		new Outer.Inner().print();//这个调用方法看着是不是很熟悉,和在build构造中的一样
	}
}

此时的内部类和外部类一样,可以实例化自己的实例,例如

Outer out = new Outer();
Outer.Inner in = out.new Inner();


除此之外,内部类也可以在方法中声明,感兴趣的读者可以自己去查一查,在这里不再赘述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_evenif

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值