1.成员变量的隐藏
子类对象以及子类自己定义的方法操作与父类同名的成员变量是指子类重新声明的这个成员变量.
子类对象仍可以调用从父类继承的方法操作被子类隐藏的成员变量,也就是说:子类继承的方法所操作的变量一定是被子类继承的或隐藏的成员变量
2.方法的重写
如果子类可以继承父类的某个方法,那么子类就有权利重写这个方法.
方法重写是指:子类中定义一个方法,这个方法的类型和父类的方法的类型一致,或者是父类方法类型的子类型(所谓子类型是指:如果父类的方法何类型是"类",那么允许子类的重写方法的类型是"子类"),并且这个方法的名字、参数个数、参数类型和父类完全相同.子类如此定义的方法叫做方法的重写.
1.是父类方法类型的子类型:(Integer类是Object类的子类型)
class A{
Object get() {
return null;
}
}
class B extends A{
Integer get() {//Integer类是Object类的子类,所以这也算是重写
return new Integer(100);
}
}
public class Array {
public static void main(String[] args) {
B b=new B();
Integer t=b.get();
System.out.println(t.intValue());
}
}
2.如果是基本数据类型的话,就得和父类方法类型完全一致:(void类型和void类型)
class University{
void entireRule(double math,double english,double chinese) {
double sum=math+english+chinese;
if(sum>=180)
System.out.println("分数达到大学录取线");
else
System.out.println("分数未达到大学录取线");
}
}
class ImportantUniversity extends University{
void entireRule(double math,double english,double chinese) {
double sum=math+english+chinese;
if(sum>220)
System.out.println("分数达到重点大学录取线");
else
System.out.println("分数未达到重点大学录取线");
}
}
public class Array {
public static void main(String[] args) {
double math=62,english=76.5,chinese=67;
ImportantUniversity univer=new ImportantUniversity();
univer.entireRule(math,english,chinese);
math=91;
english=82;
chinese=86;
univer.entireRule(math, english, chinese);
}
}
3.重写的注意事项:
不允许降低对象的访问权限,但可以提高访问权限(权限从高到低:public>protected友好的>private)