1. 继承
(1) extends 用于类的继承,implements 用于接口的继承
(2) extends 不能多重继承,但是 implements 可以多重继承。
(3) super关键字:用来引用当前对象的父类。
this关键字:指向自己的引用。
(4) final 关键字声明类,就是把类定义为最终类,不能被继承
(5) 构造器(构造函数):子类会显式或隐式地调用父类的构造器。
如果父类构造器没有参数,则子类会自动调用父类的无参构造器。
如果子类显式地调用了父类的带参构造器,则不会再调用无参构造器。
2. 重写 与 重载
(1) 参数必须完全相同。
(2) 返回类型可以不相同,但是必须是父类返回值的派生类。
(3) 访问权限可以变高,但不能变低。比如父类是procted,则子类可以是public,但不能是private
(4) 声明为 final 的方法不能被重写。
(5) 声明为 static 的方法不能被重写,但能够被再次声明
(6) 重写的方法可以抛出任何RuntimeException ,但不能抛出新的IOException,或者比被重写方法声明的更广泛的IOException。
(7) 重载: 参数必须不同,返回值可以相同也可以不同。
(8) 被重载的方法可以改变访问修饰符。
(9) 被重载的方法可以声明新的或更广的检查异常。
3. 抽象类:
例如: public abstract class Employee
(1) 抽象类不能被实例化;
(2) 抽象类中可以没有抽象方法,但是有抽象方法的类必定是抽象类
(3) 抽象方法不能用static 修饰
(4) 子类必须实现父类中的抽象方法,除非该子类也是抽象类。
4. 封装
任何要访问类中私有成员变量的类都要通过这些getter和setter方法
5. 接口 Interface
例子:public interface NameOfInterface
(1) 接口无法被实例化,只能被实现
(2) 实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类
(3) 接口类型可来声明一个变量,它可以是一个空指针,或者是一个以此接口实现的对象
(4) 接口没有构造方法,不能包含成员变量(但可以是static变量),支持多继承
(5) 接口和接口之间也可以是继承关系,继承使用extends关键字。例如:public interface Football extends Sports
(6) 接口的多重继承: public interface Hockey extends Sports, Event
(7) 标记接口: 没有任何方法的接口,它仅仅表明它的类属于一个特定的类型。
例如: public interface EventListener {}
6. 枚举
(1) 枚举的定义。注意不需要写 =1, =2 之类
enum Color
{
RED, GREEN, BLUE;
}
(2) 可以使用for values() 语句遍历枚举
for (Color myVar : Color.values()) {
System.out.println(myVar);
}
(3) 可以用于switch
Color myVar = Color.BLUE;
switch(myVar) {
case RED:
System.out.println("红色");
break;
}
(4) 一些方法:
values() : 返回枚举类中所有的值。
ordinal():返回枚举常量的索引。
valueOf():返回指定字符串值的枚举常量。
7. 包(package)
(1) package net.java.util 的路径应该是 net/java/util/ 这样保存的
(2) import payroll.*; 表示引用 payroll包的所有类
(3) 类目录的绝对路径叫做 class path。设置在系统变量 CLASSPATH 中
显示:echo $CLASSPATH;
删除: unset CLASSPATH; export CLASSPATH
设置:CLASSPATH=/home/jack/java/classes; export CLASSPATH