Java日常练习题,每天进步一点点(38)
题目描述
定义父类People,创建子类VIP,编写一个测试类Test,在测试类里面,创建两个People的对象和两个VIP的对象并赋值,然后分别调用他们的属性与方法
题目思路
本题考察了Java面向对象的三大特性:封装、继承、多态。People作为父类,VIP作为子类,VIP拥有自己的新属性和方法。在测试类中,定义了四个对象,即可以通过父类的对象调用父类的属性和方法,也可以通过子类的对象调用自己特有的新属性和方法。
题目解答
首先,我们需要定义People类,定义它的属性和方法,代码如下:
public class People {
private String name;
private int age;
public People(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
public void eat() {
System.out.println("I'm eating");
}
public void sleep() {
System.out.println("I'm sleeping");
}
}
然后,我们定义VIP类,继承People,并新增了新的属性和方法,代码如下:
public class VIP extends People {
private int level;
public VIP(String name, int age, int level) {
super(name, age);
this.level = level;
}
public int getLevel() {
return this.level;
}
public void watchMovie() {
System.out.println("I'm watching movie");
}
public void comment() {
System.out.println("I'm commenting");
}
}
最后,我们编写测试类Test,创建两个People对象和两个VIP对象,并分别调用他们的属性与方法,代码如下:
public class Test {
public static void main(String[] args) {
People p1 = new People("Tom", 18);
People p2 = new People("Jerry", 20);
VIP v1 = new VIP("Jack", 25, 1);
VIP v2 = new VIP("Rose", 30, 2);
System.out.println(p1.getName() + " " + p1.getAge());
p1.eat();
p1.sleep();
System.out.println(p2.getName() + " " + p2.getAge());
p2.eat();
p2.sleep();
System.out.println(v1.getName() + " " + v1.getAge() + " " + v1.getLevel());
v1.eat();
v1.sleep();
v1.watchMovie();
v1.comment();
System.out.println(v2.getName() + " " + v2.getAge() + " " + v2.getLevel());
v2.eat();
v2.sleep();
v2.watchMovie();
v2.comment();
}
}
程序输出结果如下:
Tom 18
I'm eating
I'm sleeping
Jerry 20
I'm eating
I'm sleeping
Jack 25 1
I'm eating
I'm sleeping
I'm watching movie
I'm commenting
Rose 30 2
I'm eating
I'm sleeping
I'm watching movie
I'm commenting
可以看到,我们成功地创建了People和VIP两个类,并通过测试类Test实现了它们的实例化和属性与方法的调用。
示例说明
示例一:
如果我们把People的构造方法改成默认构造方法,会怎么样?
答:会报错,因为我们在VIP的构造方法中使用了super关键字调用父类的构造方法,而父类的构造方法已经不是默认构造方法了。
示例二:
如果我们新增一个VIP子类的子类SVIP,会怎么样?
答:继承VIP,并再新增自己的新属性和方法即可。在测试类中,我们需要创建两个VIP对象和两个SVIP对象并分别调用他们的属性与方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java日常练习题,每天进步一点点(38) - Python技术站