1.
【编号:1001 】一位面向对象的程序员小李,在编程过程中需要描述和处理个人信息,于是定义了类Person,如下所示:
public class Person {
private String name;
private int age;
private String birthday;
public String getInfo ( ) {
return "Person[name=" + name + ", age=" + age + ", birthday=" + birthday + "]" ;
}
}
一周以后,小李又遇到了新的需求,需要描述和处理学生信息,于是他又定义了一个新的类:
public class Student {
private String name;
private int age;
private String birthday;
private String school;
public String getInfo ( ) {
return "Student[name=" + name + ", age=" + age + ", birthday=" + birthday + ", school=" + school + "]" ;
}
}
观察发现,这两个类的结构太接近了,后者比前者仅多了一个属性,却需要重复定义其他内容。请根据类的继承机制,帮助小李重新设计Student类。并测试获取Student对象的属性信息。
参考答案
public class Student extends Person {
private String school;
public Student ( ) {
}
public Student ( String name, int age, String birthday, String school) {
super ( name, age, birthday) ;
this . school = school;
}
public String getInfo ( ) {
return "Student[name=" + getName ( ) + ", age=" + getAge ( ) + ", birthday=" + getBirthday ( ) + ", school=" + school + "]" ;
}
2.
【编号:1002 】请补充下列代码,使测试类编译通过并运行。
已知代码材料
class Fu {
public void methodFu ( ) {
System. out. println ( "我是父类的method方法" ) ;
}
}
class Zi {
}
public class Demo1 {
public static void main ( String[ ] args) {
Zi z = new Zi ( ) ;
z. methodFu ( ) ;
z. methodZi ( ) ;
}
}
运行结果:
我是父类的method方法
我是子类的method方法
参考答案
class Zi extends Fu {
public void methodZi ( ) {
System. out. println ( "我是子类的method方法" ) ;
}
}
3.
【编号:1003 】请补充下列代码,使得程序按照顺序分别输出30 20 10 。
参考答案
class Fu {
int num = 10 ;
}
class Zi extends Fu {
int num = 20 ;
public void method ( ) {
int num = 30 ;
System. out. println ( num) ;
System. out. println ( this . num) ;
System. out. println ( super . num) ;
}
}
4.
请对下列继承代码进行优化和丰富,使得创建子类对象的时候,可以通过有参构造进行初始化,随后通过getXxx方法获取属性并输出。
class Person {
private String name;
private int age;
public Person ( ) {
}
public Person ( String name, int age) {
this . name = name;
this . age = age;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public int getAge ( ) {
return age;
}
public void setAge ( int age) {
this . age = age;
}
}
class Student extends Person {
}
public class Demo3 {
public static void main ( String[ ] args) {
Student s = new Student ( ) ;
s. setName ( "张三" ) ;
s. setAge ( 23 ) ;
}
}
运行结果
张三. . .23
参考答案
class Person {
private String name;
private int age;
public Person ( ) {
}
public Person ( String name, int age) {
this . name = name;
this . age = age;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public int getAge ( ) {
return age;
}
public void setAge ( int age) {
this . age = age;
}
}
class Student extends Person {
public Student ( ) {
}
public Student ( String name, int age) {
super ( name, age) ;
}
}
public class Demo3 {
public static void main ( String[ ] args) {
Student s = new Student ( "张三" , 23 ) ;
System. out. println ( getName+ getAge) ;
}
}
5.
某手机系统5 版本的时候,引入了【语音助手】的功能,但最开始的【语音助手】只能说英文,后期版本更新到6 版本的时候,【语音助手】才能够在说英文的基础上又会说中文,请结合继承的思想,对下列代码进行补充,最终在控制台上输出(speak english)(说中文)
class PhoneVersion5 {
public void speak ( ) {
System. out. println ( "speak english" ) ;
}
}
class PhoneVersion6 extends PhoneVersion5 {
}
public class Demo4 {
public static void main ( String[ ] args) {
PhoneVersion6 pv6 = new PhoneVersion6 ( ) ;
pv6. speak ( ) ;