面向对象——上转型
定义
父类声明,子类实例化的对象称为上转型对象。
上转型对象的使用
上转对象不能操作子类新增的成员变量,失掉了这部分属性,不能使用子类新增的方法,失掉了一些功能。
上转型对象可以操作子类继承的成员变量,也可以使用子类继承的或重写的方法。
如果子类重写了父类的某个方法后,当对象的上转型对象调用这个方法时一定是调用了子类重写的方法。因为程序在运行时知道,这个上转对象的实例是子类创建的,只不过损失了一些功能而已。
可以将上转型对象再强制转换为一个子类对象,此时对象又具备了子类所有属性和功能(即将上转型对象还原为子类对象)。
不可以将父类创建的对象赋值给子类声明的对象。
关键字final
final关键字可以用来修饰类、方法和变量。
final修饰的类不能被继承。
final修饰的方法不能被重写。
final修饰的变量是常量,不能修改其值。
关键字abstract(抽象)
abstract关键字可以用来修饰类和方法。
由abstract修饰的类叫做抽象类,该类不能被实例化,也就是不能使用关键字new来创建该类对象。
由abstract修饰的方法叫做抽象方法,抽象方法只有声明部分,而没有具体的方法体。
抽象类重要规则
如果一个非抽象类是一个abstract类的子类,它必须具体实现父类的**所有**abstract方法,抽象类也可以继承抽象类,但是不用实现抽象父类中的abstract方法。
如果一个类中含有abstract方法,那么这个类必须用abstract来修饰(abstract类也可以没有abstract方法,但abstract方法必须出现在abstract类中)。
一个abstract类只关心它的子类是否具有某种功能,并不关心功能的具体行为,功能的具体行为由子类负责实现。
接口
当一个抽象类中的方法全部为抽象方法时,可以使用interface关键字将这个抽象类定义为接口。
在java中一个类只能有一个父类,如果某个类需要继承多个类的变量(状态)和方法(行为&#x