一.类的继承
类继承的实现
Java语言具有单继承的特点,不支持多继承,每个子类只有一个直接父类。
子类会继承父类中所有非private修饰的属性和方法,且不能获得父类的构造器。
class subClassName extends superClassName[implements interfaceNameList]{
//类体
}
extends//继承关键字
方法的重写
方法的重写是指在子类中使用和父类完全同名的方法,且方法的参数(个数,类型,排列顺序)和返回类型完全一样。
重写方法时,子类的访问控制权限不能低于父类的访问控制权限。
super关键字
使用super关键字可以访问被子类隐藏或重写成员,也可以访问未被隐藏的成员。
如果没有显式的使用super关键字调用父类的构造方法,系统会隐含调用super这个方法。
当在子类构造器中调用父类构造器时,super关键字应该作为子类构造器方法体的第一个执行语句。
-
调用父类中被重写的方法
super.方法名([参数表]);
-
访问父类中被重写的方法
super.成员变量名;
-
调用父类的构造器
super([参数表]);
this关键字
除了默认指代当前实例对象,this还有其他用法。
如果一个类中定义了多个构造方法,可以使用this在某一个构造方法中引用其他构造方法。
二.抽象类和方法
抽象类
抽象类是指只能被继承而不能生成具体对象的类。
抽象类中可以包含抽象方法,也可以不包含抽象方法。但只要一个类包含一个抽象方法,这个类就是抽象的。
抽象类只能作为父类使用,由它派生的子类必须实现抽象类的所有抽象方方法。
abstract class className{
//属性
//抽象方法
[访问控制修饰符]abstract 返回值类型 方法名([形参列表]);
//非抽象方法
[访问修饰控制符]返回值类型 方法名([形参列表]){
}
}
抽象方法
抽象方法仅仅为所有子类定义一个统一的接口,具体实现通过派生类对抽象方法的覆盖来实现。
抽象方法只有声明,没有方法体,以";"结尾。
构造方法,静态方法,私有方法,final方法不能被声明为抽象方法。
abstract datatype AbstractMethodName(parameterList);
三.final修饰符
终极类
被final修饰的类,终极类不能拥有子类。
终极方法
被final修饰的方法,终极方法不能被子类重写。
终极变量
final修饰的变量,终极变量取值在整个程序中不能改变,即常量。
四.接口
接口是一种特殊的抽象类。
通过接口可以实现类间多重继承的功能。
与类的继承区分,对接口的继承称为实现。
接口中不能定义变量,只能定义final修饰的常量。
接口是一个抽象类,接口中的方法都是抽象方法。
接口的声明
interface关键字
[public] interface interfaceName[extends 父接口名列表]{
//数据成员声明
[public][static]final datatype variableName = Value;
//抽象方法声明
[public][abstract][native]return DataType methodName(parametersList);
}
接口的实现
implements关键字
public class Student implement people{
}
五.包
包是一种松散的类的集合,可以将各种类文件组织起来。类似于其他语言的命名空间,当一个类需要在多个地方重用时,应该把它放在包中。
创建包
缺省时,系统为每一个.Java源文件创建一个无名包,同个Java文件每个类都属于同一个包。
创建包的文件应该放在Java源文件的的第一个语句。
常常将包放在JAR文件中,一个JAR文件往往会包含多个包。
package packageName;
//多级子目录
package packageName1,packageName2,packageName3;
引用包中的类
-
包名.类名直接使用类
-
import导入包
//加载包中指定的类
import 包名.类名;
//加载包中的所有类
import 包名.*;
-
同一个包或者缺省无名包将自动引用
-
Java.lang包中的类将会自动导入