成员变量的隐藏
在编写子类时,我们仍然可以声明成员变量,一种特殊的情况是,如果所声明的成员变
量的名字和从父类继承来的成员变量的名字相同(声明的类型可以不同),在这种情况
下,子类就会隐藏掉所继承的成员变量,即子类重新声明定义了这个成员变量。需要注
意的是,子类对象仍然可以调用从父类继承的方法操作隐藏的成员变量。
实例代码:
package com.blue.main;
public class Person{
int age;
float height;
double weight;
}
package com.blue.main;
public class Man extends Person{
int age;
public void test(){
}
方法重写
在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不
想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法
重写又称 方法覆盖。 若子类中的方法与父类中的某一方法具有相同的方法名、返回类
型和参数表,则新方法将覆盖原有的方法。 如需父类中原有的方法,可使用super关键
字,该关键字引用了当前类的父类。
方法重写的特性
关于方法重写的一些特性:
1.发生方法重写的两个方法返回值、方法名、参数列表必须完全一致(子类重写父类的
方法)
2.子类抛出的异常下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)
3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类
访问级别)
根据2,3条是不是能确定第一条,子类方法的返回值必须是父类方法返回值的子类。
实例代码:
class Person//定义父类
public void print(){//父类中的方法
System.out.println( 父类Person的print方法! );
}
}
class Student extends Person//定义子类继承Person类
{public void print(){//方法的重写
System.out.println( 子类Student的print方法! );
}
}
public class 0verrideExampleO1
{public static void main(String args[])
{Student s=new Student();
S.print();
}
}
Class Person
{public void print () {
System.out.println( 父类Person的print方法! );
}
}
class Student extends Person
{public void print () {
super.print(://访问父类中被子类覆写过的方法
System.out.println(" 子类Student的print方法!" );
}
}
public class OverrideExample02
{public static void main(String args[])
{Student s=new Student();
S.print();
}
}