Class
类的声明
使用关键字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 |