更多
协变返回类型
子类可以覆盖父类方法,声明一个比父类更具体的返回类型。
java
public class Animal {
public Animal getAnimal() {
return new Animal();
}
}
public class Cat extends Animal {
// 返回类型与子类相同
public Cat getCat() {
return new Cat();
}
}
关键字 this
- 是对当前对象的引用。
- 可以引用当前对象的任何成员。
构造函数中使用
java
public class Rectangle {
private int x, y;
private int width, height;
// 显示调用构造函数
public Rectangle() {
this(0, 0, 1, 1);
}
public Rectangle(int width, int height) {
this(0, 0, width, height);
}
public Rectangle(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
//...
}
修饰符
- (at the top level)类或接口中
public
- 不使用,仅在自己的包中可见
- (at the member level)类成员中
public
private
protected
- 不使用
可访问性如下:
修饰符 | class | package | subclass | 其他 |
---|---|---|---|---|
public | 是 | 是 | 是 | 是 |
protected | 是 | 是 | 是 | 否 |
无修饰 | 是 | 是 | 否 | 否 |
private | 是 | 否 | 否 | 否 |
修饰符 static
支持静态字段和静态方法。
常量
final
表示该字段不能修改。
java
static final double PI = 3.14;
提示
如果基本类型和字符串类型被定义为常量,且在编译时就知道常量的值,编译器会将代码中所有地方的常量名称替换为这个值。
初始化
直接定义
java
class Rectangle {
public static int x = 100;
private static int y = 200;
}
静态初始化块
可以有任意数量的静态初始化块,并且按照出现顺序执行。
java
class Rectangle {
private static int x;
private static {
x = 100;
System.out.println(x);
}
}
初始化实例成员
一般会将实例变量的初始化放在构造函数中,但也还可以放在初始化块中。
java
class Rectangle {
public int x, y;
{
x = 100;
y = 200;
}
}