4 类 - shuzi323/java-study GitHub Wiki

  • 一个文件只能有一个类是公共的,公共类必须与文件同名。
  • 构造函数名和类名一样,支持重载。
  • Data: java.util.Data Random: java.util.random; 或Math.random()
  • static variable: 静态变量,储存在一个公共内存地址,所有同类对象共享,可变。相当于go的全局变量var,加final相当于 const
  • 静态方法: 无需创建实例就可以调用。
  • 实例变量、实例方法:即一个具体的对象里的变量和方法,不同的对象值和结果不同。不能直接用于静态方法和赋值给静态变量。需要实例化后方可使用在静态上。
  • 不要从构造方法传入参数来初始化静态数据域,最好使用set方法
  • **如果父类的属性是private,子类不能直接访问,需要用get, 用set来设置 **
  • super()或super(...)显示的调用父类的构造方法,如果要使用它,必须放在子类构造方法的第一行。执行先后:父类构造方法->子类构造方法
  • 子类的实例方法可以覆盖父类的,如果需要父类的这个方法的返回值,需要在这方法里用 super.父类该方法
  • 静态方法不能被覆盖,如果子类定义了该方法,父类方法被隐藏,可通过SuperClassName.staticMethodName调用
  • 覆盖是方法名和签名都相同。重载是方法名相同,签名不同。
  • 多态:使用父类对象的地方都可以使用子类
  • 声明类型和实际类型不同的情况:声明类型是实际类型的父类。但是当将父类转换为子类时,需要显示转换。
  • a instanceof B 判断a是否是B的实例
  • 判断对象是否相等:public boolean equals(Object o)覆盖后可以写自己的判别方式
  • protected修饰符: 允许子类访问定义在父类中的数据域或方法,不允许非子类访问。
  • final修饰一个类表面不能扩展,不能作为父类,如Math;final修饰方法,方法不能被覆盖。