内部类----静态内部类

static可以修饰内部类,通常用来给外部类赋值  例如 建造者模式

静态内部类不能使用外部类非静态的属性,必须用对象名调用

在外部类中 创建静态内部类可以直接创建,不需要创建外部类

不能使用成员内部类的方式创建静态内部类对象

内部类 对象名 = new 内部类();

外部类.内部类 对象名 = new 外部类.内部类();

外部类直接通过类名去调用内部类中的静态属性

外部类.内部类.属性 = 

如果外部类中的静态方法和内部类的属性同名 通过外部类的类名去调用。



建造者模式 举例:


/**
 * 建造者模式
 * 通过静态内部类给外部类赋值
*/

public class WeiXin {

	private String userName;
	private   String pwd;
	private int age;
	private String email;
	private boolean sex;
	// 构造方法传递  builder对象的目的就是给 外部类weixin的各种属性赋值
	WeiXin(Builder b){
		this.userName = b.userName;
		this.pwd = b.pwd;
		this.age = b.age;
		this.email = b.email;
		this.sex = b.sex;
		
	}
	@Override
	public String toString() {
		return "WeiXin [userName=" + userName + ", pwd=" + pwd + ", age=" + age
				+ ", email=" + email + ", sex=" + sex + "]";
	}

	static class Builder{
		private String userName;
		private String pwd; // 必填项
		// 选填项
		private int age;
		private String email;
		private boolean sex;
		
		public Builder(String userName,String pwd){
			this.userName = userName;
			this.pwd = pwd;
		}
		public Builder setAge(int age) {
			this.age = age;
			return this;
		}
		
		public Builder setSex(boolean sex) {
			this.sex = sex;
			return this;
		}
		public Builder setEmail(String email) {
			this.email = email;
			return this;
		}
		
		// 内部类创建外部类对象用的   则需要new 外部类的对象
		public WeiXin build(){
			return new WeiXin(this);
		}
		
		// 有这个方法就可以    WeiXin weixin = new WeiXin.Builder().build();
		// 将内部类对象作为外部类的参数传递过去  目的是给 外部类属性赋值
		
	}
	
	public static void main(String[] args) {
		// 直接创建微信对象
		WeiXin weiXin = new WeiXin(new Builder("保镖", "123456"));
		
		// 通过内部类的build方法创建微信对象
		Builder builder = new  Builder("保镖", "345678");
		builder.setAge(22);
		builder.setEmail("没有@qq.com");
		builder.setSex(false);// false指代男
		WeiXin weiXin2 = builder.build();
		System.out.println(weiXin2.toString());
		
		// 最简便的创建微信对象的格式   注意; build() 要放到最后
		WeiXin weiXin3 = new WeiXin.Builder("保镖", "567890").setAge(12).setEmail("aaa#@qq.com").setSex(false).build();
	}
	
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值