类的声明
使用关键字extends
用于继承类,使用关键字implements
用于实现接口
class MyClass extends MySuperClass implements MyInterfaces1, MyInterface2 {
// fields, constructors, and
// method declarations
}
类还可以使用修饰符public, private, protected, 但是private只能用于嵌套类
方法的重载
Java通过方法的签名(signatures)来区分类中不同的方法,因此可以声明同样名字的方法(只要它们的参数类型及个数不同即可),即重载(overload)
方法的签名 = 方法名 + 方法的参数。 返回值类型不是签名的一部分!
⚠️ 方法被重载时,编译器依据传入的参数个数及类型来确定具体哪个方法被调用
构造函数
自定义类可以不提供构造函数,但是如果该自定义类存在子类的,必须至少提供一个默认的无参的构造函数
当子类没有声明构造函数的时候,编译器会默认调用其父类的默认的无参的构造函数。如果父类中不存在该无参构造函数,那就会有编译错误
初始化块
一个类可以有多个静态初始化块,编译器按照静态初始化块的顺序执行。
Java编译器会将实例初始化块放入每一个构造函数,因此这种方法可以在多个构造函数之间共享代码
class InitializationBlock {
/* 静态初始化块 */
static {
/* 初始化静态变量 */
}
/* 实例初始化块 */
{
/* 初始化实例变量 */
}
}
可变参数
可变参数(varargs)是指方法声明中用...
声明的参数变量,它不限定参数的个数,使用起来时类似数组
public Polygon polygonFrom(Point... corners) {
int numberOfObjects = corners.length;
double squareOfSide, lengthOfSide;
squareOfSide = ( corners[1].x - corners[0].x ) * ( corners[1].x - corners[0].x )
+ ( corners[1].y - corners[0].y ) * ( corners[1].y - corners[0].y ) ;
lengthOfSide = Math.sqrt(squareOfSide);
}
创建对象
虽然创建对象很简单,但是语句Point point = new Point(23, 40);
里面有大文章
- 声明:
Point point
声明了引用变量,其类型是Point; - 实例化:new关键字告诉编译器创建一个对象;
- 初始化:new关键字后的是构造函数,告诉编译器用该构造函数初始化刚刚实例化的那个对象
- 引用: 返回刚刚初始化完成的那个对象的内存地址给引用变量存储
访问修饰符
modifier | Class | Package | SubClasss | Global |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
no modifier | Y | Y | N | N |
private | Y | N | N | N |