成员变量的隐藏和方法的重写

成员变量的隐藏和方法的重写
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.抽象类的根本目的

代码复用

因为抽象类既可以有普通的成员方法,也可以有抽象的成员方法。因此,可以将多个子类相同的行为在父类中声明,不同的行为在子类中声明。





Autor:VincentAdamNemessis E-mail:vincent5519@yeah.net QQ:3377299629 Wechat:ZTXLoveC3344
原文地址:https://www.cnblogs.com/VincentAdam/p/86b9c681eeb536a366913bd257426a32.html