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

来源:互联网 发布:2017淘宝答题入口 编辑:程序博客网 时间:2024/06/11 21:03

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;}@Overridepublic 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();}}




0 0
原创粉丝点击