成员变量的隐藏和方法的重写
1.成员变量的隐藏
子类中声明的成员变量与父类中的成员变量相同,在子类内部,被子类继承到了父类中的成员变量将会被隐藏。(声明的成员变量类型可以不同,名字相同)
2.方法的重写
子类中声明的成员方法与父类中的成员方法完全相同(返回值类型、方法名称、参数列表),称子类重写了父类的成员方法。
目的:改变父类的行为。
3.方法的重写与方法的重载
方法的重写是发生在子类与父类之间。方法的重载是发生一个类内部
一、super
this:代表本类对象(当前对象) super:代表父类
在子类内部访问被子类隐藏的父类的成员变量
在子类内部访问被子类重写的父类的成员方法
调用父类的构造方法
欲构建子类必先构建父类。当我们使用子类创建对象时,调用子类的构造方法,首先要调用父类的构造方法,来创建父类对象,然后再创建子类对象。
super(catgory);//调用父类的构造方法
注意:super必须是子类构造方法中的第一条语句。
二、final
终极的、最终的。
修饰类:最终类、终极类,不能再被继承,不能有子类。(如果此类完美,没有必要再增加功能的情况下)
修饰方法:final修饰的方法不允许子类重写。
修饰变量:常量,final常量只能赋值一次
三、对象的向上转型
1.什么是上转型
将子类对象赋值给父类的引用,
动物 dw=new 老虎("老虎");
dw是父类“动物”创建 一个引用(栈内存)。而new 老虎("老虎")是子类创建 的对象,将子类的对象赋值给了父类的引用。此时,称子类对象向上发生了转型。
2.作用
如果对象向上发生转型,则丢失其特有的行为。也就是说,在子类内部新声明的成员变量和成员方法将会丢失。
上转型对象,调用子类重写的父类中的方法时,调用的是子类重写后的方法。
四、抽象类、抽象方法
1.抽象方法
所有的动物都会叫,羊是咩咩叫,猫是喵喵叫,狗是汪汪叫
public abstract void shout();
这个方法只有方法的声明,没有方法的实现,很像一条语句,此时的方法,称为抽象方法。
abstract:抽象类,它声明的方法称为抽象 方法,只有方法的声明,没有方法的实现(方法体)
2.抽象类
如果一个类内有一个或多个抽象方法,则该类必须声明为抽象类。
public abstract class Anmial {
//必须有一个方法,叫,但是这个方法实现,不同的子类其实现是不同的。
public abstract void shout();
}
抽象类可以声明成员变量和普通的成员方法,还可以声明抽象方法。
3.多态
如果一个类继承一个抽象类,则必须实现抽象类中的抽象方法。
抽象类的子类,如果不是抽象类,则必须实现其父类中的抽象方法。
抽象类只能被继承,不能创建对象。
抽象类的子类可以是实现类,也可以是抽象类。
多态:同一个行为(父类规定的),不同的子类有不同的实现。
4.抽象类的根本目的
代码复用
因为抽象类既可以有普通的成员方法,也可以有抽象的成员方法。因此,可以将多个子类相同的行为在父类中声明,不同的行为在子类中声明。