类、超类和子类

定义子类

1、关键字extends表示继承。关键字extends表明正在构造的新类。extends表明正在构造的新类派生出一个已存在的类。已存在的类叫做父类、超类、基类。新类叫做子类、派生类、孩子类。在JAVA中通常为超类和子类。
2、在设计类的时候,应该讲通用方法放在超类中,而将具有特殊用途的方法放在子类中。

public class Manager extends Employee
{
	private double bonus;
	public void setBonus(double bonus)
	{
		this.bonus = bonus;
	}
}

覆盖方法

1、超类中的一些方法,子类不一定适用所以会有新方法来覆盖(override)超类这个方法。
2、我们希望调用超类的方法,而不是当前类的方法,为此,需要使用特定的关键字super解决这个问题
super.方法名();
3、在子类中可以增加域、增加方法或覆盖超类的方法,但绝对不能删除继承的任何域和方法。

子类构造器

public Manager(String name,double Salary,int year,int month,int day)
{
super(name,salary,year,day);
bonus=0;
}

1、关键字super具有不同的含义,由于Manager类的构造器不能直接访Employee类中的私有域,所以必须利用Employee的构造器对这部分私有域进行初始化,我们可以通过super实现对超类构造器的调用。使用super调用构造器的语句必须是子类构造区的第一条语句。
2、如果子类的构造器没有显式地调用超类的构造器,则将自动地调用超类默认(没有参数)的构造器。
3、super关键字有两个用途,一是调用超类的方法,二是调用超类的构造器,调用构造器的语句只能作为另一个构造器的第一句出现。
4、一个对象变量可以指出多种实际类型的现象被称为多态,在运行时能够自动地选择调用哪个方法的现象称为动态绑定。

继承层次

继承不仅限于一个层次。由一个公共超类派生出来的所有类的集合被称为继承层次。在继承层次中,从某个特定的类到其祖先的路径被称为该类的继承链。

多态

1、有一个判断是否应该设计为继承关系的简单规则,这就是“is-a”规则,它表明子类的每个对象也是超类的对象。“is-a”规则的另一种表达法是置换法则。它表明程序中出现超类对象是任何地方都可以用子类对象置换。
2、在java程序设计语言中,对象变量是多态的。例如:一个Employee变量即可以引用一个Employee类对象,也可以引用一个Employee类中的任何一个子类的对象(如Manager,Executive,Secretary)
3、子类数组的引用可以转换成超类数组的引用,而不需要采取强制类型转换。

阻止继承:final类和方法

1、不允许扩展的类被称为final类。如果在定义类的时候使用了final修饰符就表明这个类是final类。例如,希望阻止们定义Executive类的子类,就可以在定义这个类的时候,使用final修饰符声明。声明格式如下:

public final class Executive extends Manager
{
...
}

2、类中的特定方法也可以被声明final。如果这样做,子类就不能覆盖这个方法(final类中的所有方法自动地成为final方法)例如

public class Employee
{
	public final String getName()
	{
	return name;
	}
}

3、域也可以被声明为final,对于final域来说,构造对象之后就不允许改变他们的值了。
4、讲方法或类声明为final主要目的是:确保他们不会在子类中改变语句

final关键字

使用final关键字做标识有“最终的”含义
final可以修饰类、方法、属性和变量
final可以修饰类,则该类不允许被继承
final修饰方法,则该方法不允许被覆盖(重写)
final修饰属性则该类的属性不会金子那个隐式的初始化(类的初始化必须有值)或在构造方法中赋值(但只能选其一)
final修饰变量,则该变量的值只能赋一次值,即变为常量

super关键字

在对象的内部使用,可以代表父类对象
1、访问父类的属性
super.age
2、访问父类方法
super.eat()

你可能感兴趣的:(类、超类和子类)