面向对象-类继承与接口(一).doc
文本预览下载声明
实验九 类继承与接口(一)
课程名称: 面向对象程序设计实验
实验项目名称: 实验九 类继承与接口 (一)
学生姓名: 专业: 学号
实验地点: 实验日期: 年 月
【实验目的】
1. 掌握Java类的继承特点,包括子类声明、对象创建等。
2. 掌握域的继承与隐藏的特点。
3. 掌握方法的继承与重写的特点。
【实验内容】
1. 执行类ConstructorChain, 请写出输出结果, 并分析出现该结果的原因。
提示:参考构造器链。
class ConstructorChain{
public static void main(String[] args){
new Son();
}
}
class Grandpa{
Grandpa(){
System.out.println(Grandpa);
}
}
class Father extends Grandpa{
Father(){
System.out.println(father);
}
}
class Son extends Father {
Son(){
System.out.println(son);
}
}
运行结果:
分析继承链上各个类的构造器的调用次序:Grandpa()Father() Son()
分析是否是超类构造器调用在前: 先调用子类
(2)在命令行上键入java –verbose ConstructorChain, 并回车, 观察各个类的加载次序.
各个类的加载次序是: class Grandpa;class Fatherex tends Grandpa;class Son extends Father;
分析是否超类先加载:是
2.程序设计,把以下代码空缺处补齐
(1)类的继承
需求分析:
校务管理系统,设计类来描述系统中的两个角色:教师与学生
public class Teacher
public class Student
抽取共性
public class Person
考虑在Person中设计教师与学生的公有域
已知部分代码设计如下
class Person
{ private String name;
private String location;
Person(){};
Person(String name){
this.name=name;
location=hangzhou;
}
Person(String name,String location){
this.name=name;
this.location=location;
}
public String info(){
return
name: +name+ location: +location;
}
}
class Teacher extends Person
{
int age;//增加年龄属性
Teacher(String name, int age){
super(name);
this.age=age;//构造器体
}
Teacher(String n, String l,int age){
super(n,l);//构造器体
this.age=age;//构造器体
}
public String info(){
return super.info()+ age+age;//返回姓名:住所:以及年龄的信息
}
}
class Student extends Person
{
int age;//增加年龄属性
Student(String name, int age){
super(name);
this.age=age;//构造器体
}
Student(String n, String l,int age){
super(n,l);//构造器体
this.age=age;//构造器体
}
public String info(){
return super.info()+ age+age;//返回姓名:住所:以及年龄的信息
}
}
public class test1{
public static void main(String args[]){
Teacher teacher1=
显示全部