13. 类的继承域的隐藏与方法的重写
[类修饰符] class 子类名 [extends 父类名]
{
成员方法定义;
}
注:在java里所有类都默认继承Object这个类
public static void main(String[] args) {
// TODO Auto-generated method stub
Student a=new Student("张三",18);
a.show();
Undergraduate b=new Undergraduate("张三",18,"博士");
b.show();
}
}
class Student
{
String name;
int age;
public Student()//详见下关于super的注意事项
{
}
public Student(String n,int a)
{
name=n;
age=a;
}
public void show()
{
System.out.println("学生姓名:"+name+" 年龄:"+age);
}
}
class Undergraduate extends Student//继承方法Student
{
String degree;//新加入一个变量
public Undergraduate(String n,int a,String d)
{
name=n;
age=a;
degree=d;
}
public void show()//重写show方法
{
System.out.print("学生姓名:"+name+" 年龄:"+age+" 学位:"+degree);
}
}
super关键字
this和super是Java语言中的两个常用关键字。this常用来指代子类对象,super常用来指代父类对象。this和super与继承有密切关系。
(1)在子类的所有构造方法中,必须首先调用一个父类的构造方法。
(2)如果子类自己没有构造方法,则它将调用父类的无参数构造方法作为自己的构造方法;如果子类自己定义了构造方法,则在创建新对象时,它将先执行父类的无参数构造方法,然后再执行自己的构造方法。
(3)子类可在自己的构造方法中使用super(…) 来调用父类带参数的构造方法。super(…)调用语句必须是子类构造方法中的第一个可执行语句。
class superclass
{
int x;
void getInfo( )
{
System.out.println("父类的域x的值为:"+x);
}
}
class subclass extends superclass
{
int x;
void getInfo()
{
x=20;
super.x=30;//利用super关键字给父类赋值
super.getInfo( );//利用super关键字调用父类方法
System.out.println("子类的域x的值为:"+x);
}
}
public class Test
{
public static void main(String args[ ])
{
subclass s=new subclass( );
s.getInfo( );
}
}
学习了super关键字可得此解法
public static void main(String[] args) {
// TODO Auto-generated method stub
Student s=new Student("张三",18);
s.show();
Undergraduate u=new Undergraduate("张三",18,"博士");
u.show();
}
}
class Student
{
String name;
int age;
public Student(String name,int age)
{
this.name=name;
this.age=age;
}
public void show()
{
System.out.println("学生姓名:"+name+" 年龄:"+age);
}
}
class Undergraduate extends Student
{
private String degree;
public Undergraduate(String name,int age,String degree)
{
super(name,age);//调用父类中的方法
this.degree=degree;
}
public void show()
{
System.out.print("学生姓名:"+name+" 年龄:"+age+" 学位:"+degree);
}
}

浙公网安备 33010602011771号