2018-01-24

静态初始化块

public class HelloWorld{
      String name;
      //通过初始化块为成员变量赋值
      {
            name="sb";
      }
}

在类的声明中,可包含多个初始化块,当创建类的实例时,就会一次执行这些代码块。如果使用static修饰初始化块,就成为静态初始化块。静态初始化块只在类加载时执行,只会执行一次且只能给静态变量赋值。执行顺序:静态初始化块→普通初始化块→构造方法。

访问修饰符

private:本类
默认:本类、同包
protected:本类、同包、子类
public:本类、同包、子类、其他

内部类

1.为什么要用内部类
1)提供了更好的封装,不允许同一个包中的其他类访问该类。
2)内部类的方法可直接访问外部类的所有数据,包括私有数据。
2.class文件
编译java文件会生成外部类.class和外部类$内部类.class两个class文件。
3.内部类实例化
静态内部类实例化:内部类 对象名=new 内部类();
非静态内部类实例化:内部类 对象名 = 外部类对象.new 内部类();
方法内部类:内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,因此方法内部类不能使用访问控制符和static修饰符。

初始化顺序

父类属性初始化→父类构造方法→子类属性初始化→父类构造方法

final关键字

修饰类:该类不允许被继承。
修饰方法:该方法不允许被覆盖
修饰属性:该类的属性不会进行隐式的初始化,初始化时赋值或者构造方法中赋值
修饰变量:只能赋值一次

super

1.代表父类,调用父类属性:super.属性;调用父类方法:super.方法
2.子类构造过程中必须调用父类的构造方法。
如果子类构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法:super();。
如果显示的调用构造方法,必须在子类的构造方法的第一行。
如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无惨的构造方法,则编译出错。

Object类

1.toString()
在Object类里面定义toString()方法时返回的对象的哈希code值(对象地址字符串)
2.equals()
比较的是对象的引用是否指向同一块内存地址。利用编译器可以自动重写equals()

public class Test {
    private String age;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Test test = (Test) o;
        return Objects.equals(age, test.age);
    }

    @Override
    public int hashCode() {

        return Objects.hash(age);
    }
}

数据模型分析
业务模型分析
显示和流程分析

你可能感兴趣的:(2018-01-24)