06.继承和多态

一.类的继承

类继承的实现

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包中的类将会自动导入

posted @ 2020-06-13 19:26  不知名的菜鸟  阅读(125)  评论(0编辑  收藏  举报