当前位置:   article > 正文

Java题库练习6_java封装继承多态综合练习题

java封装继承多态综合练习题

目录

练习 - 巩固封装、继承和多态

第1关:什么是封装,如何使用封装

第2关:什么是继承,怎样使用继承

第3关:super关键字的使用

第4关:方法的重写与重载

第5关:final关键字的理解与使用

第6关:什么是多态,怎么使用多态

学习-工具类(时间工具类、数学工具类)

第1关:Date类和SimpleDateFormat类的用法

第2关:Math类


练习 - 巩固封装、继承和多态

共六关

第1关:什么是封装,如何使用封装

根据提示,在右侧编辑器Begin-End处补充代码:

  • 声明一个Person类,私有化属性字符串类型的name和int类型的age,并将字段封装起来;

  • Person类中定义一个talk()方法,打印姓名和年龄信息;

  • main方法中声明并实例化一Person对象p,给p中的属性赋值,调用talk()方法打印 我是:张三,今年:18岁注意:输出语句中“:”和“,”都是中文标点

去掉不必要的语句,以下写法算是简单的吧。

  1. package case1;
  2. public class TestPersonDemo {
  3. public static void main(String[] args) {
  4. /********* begin *********/
  5. // 声明并实例化一Person对象p
  6. Person p=new Person("张三",18);
  7. // 给p中的属性赋值
  8. // 调用Person类中的talk()方法
  9. p.talk();
  10. /********* end *********/
  11. }
  12. }
  13. // 在这里定义Person类
  14. class Person {
  15. /********* begin *********/
  16. private String name;
  17. private int age;
  18. public Person(String name,int age){
  19. this.name=name;
  20. this.age=age;
  21. }
  22. public void talk(){
  23. System.out.print("我是:"+this.name+",今年:"+this.age+"岁");
  24. }
  25. /********* end *********/
  26. }

第2关:什么是继承,怎样使用继承

根据提示,在右侧编辑器Begin-End处补充代码:

  • 声明一个Animal类,将属性nameage封装起来,提供对外的公共访问方法,定义Animalintro方法,打印出名字和年龄信息,如:大黑狗8岁

  • 声明一个Cat类和Dog类,都继承Animal类,分别定义各自的voice方法和eat方法;

  • main方法中分别实例化一个Cat对象和Dog对象,设置各自的属性并调用这两个方法,再调用intro方法,打印出名字和年龄信息;

  • 具体具体输出要求请看测试说明。

  1. package case2;
  2. public class ExtendsTest {
  3. public static void main(String args[]) {
  4. // 实例化一个Cat对象,设置属性name和age,调用voice()和eat()方法,再打印出名字和年龄信息
  5. /********* begin *********/
  6. Cat cat=new Cat();
  7. cat.name="大花猫";
  8. cat.age=6;
  9. /********* end *********/
  10. cat.voice();
  11. cat.eat();
  12. cat.intro();
  13. // 实例化一个Dog对象,设置属性name和age,调用voice()和eat()方法,再打印出名字和年龄信息
  14. /********* begin *********/
  15. Dog dog=new Dog();
  16. dog.name="大黑狗";
  17. dog.age=8;
  18. dog.voice();
  19. dog.eat();
  20. dog.intro();
  21. /********* end *********/
  22. }
  23. }
  24. class Animal {
  25. /********* begin *********/
  26. // 定义实例变量
  27. String name;
  28. int age;
  29. // 定义Getter/Setter方法
  30. public String getName(){
  31. return name;
  32. }
  33. public void setName(String name){
  34. this.name=name;
  35. }
  36. public int getAge(){
  37. return age;
  38. }
  39. public void setAge(int age){
  40. this.age=age;
  41. }
  42. // 定义Animal的intro方法
  43. public void intro(){
  44. System.out.println(this.name+this.age+"岁");
  45. }
  46. /********* end *********/
  47. }
  48. class Cat extends Animal{
  49. // Cat继承Animal类
  50. // 定义Cat类的voice()和eat()方法
  51. /********* begin *********/
  52. public void voice(){
  53. System.out.println(getName()+"喵喵叫");
  54. }
  55. public void eat(){
  56. System.out.println(getName()+"吃鱼");
  57. }
  58. /********* end *********/
  59. }
  60. class Dog extends Animal{
  61. // Dog继承Animal类
  62. // 定义Dog类的voice()和eat()方法
  63. /********* begin *********/
  64. public void voice(){
  65. System.out.println(getName()+"汪汪叫");
  66. }
  67. public void eat(){
  68. System.out.println(getName()+"吃骨头");
  69. }
  70. /********* end *********/
  71. }

第3关:super关键字的使用

根据提示,在右侧编辑器Begin-End处补充代码:

  • 声明一个名为Person的类,里面有nameage两个属性,并声明一个含有两个参数的构造方法;

  • 声明一个名为Student的类,此类继承自Person类,添加一个属性school,在子类的构造方法中调用父类中有两个参数的构造方法;定义一个intro方法,进行自我介绍,输出格式:姓名:张三,年龄:18,学校:哈佛大学注意:输出语句中“,”和“:”均为中文标点符号。

  • 实例化一个Student类的对象s,为Student对象s中的school赋值,调用intro方法,打印输出姓名:张三,年龄:18,学校:湖南中医药大学

  1. package case3;
  2. public class SuperTest {
  3. public static void main(String[] args) {
  4. // 实例化一个Student类的对象s,为Student对象s中的school赋值,打印输出信息
  5. /********* begin *********/
  6. Student s=new Student("张三",18,"湖南中医药大学");
  7. s.intro();
  8. /********* end *********/
  9. }
  10. }
  11. class Person {
  12. /********* begin *********/
  13. String name;
  14. int age;
  15. Person(String name,int age){
  16. this.name=name;
  17. this.age=age;
  18. }
  19. /********* end *********/
  20. }
  21. class Student extends Person{
  22. // Student类继承自Person类
  23. /********* begin *********/
  24. String school;
  25. Student(String name,int age,String school){
  26. super(name,age);
  27. this.school=school;
  28. }
  29. void intro(){
  30. System.out.println("姓名:"+super.name+",年龄:"+super.age+",学校:"+this.school);
  31. }
  32. /********* end *********/
  33. }

第4关:方法的重写与重载

根据提示,在右侧编辑器补充代码。

  • 声明一个名为Person的类,里面声明nameage两个属性,定义intro()方法返回姓名和年龄信息;

  • 声明一个名为Student的类,此类继承自Person类,添加school属性,声明带三个参数的构造方法,复写intro()方法,在该方法中调用父类的intro()方法,返回姓名、年龄和学校信息;

  • 实例化子类对象s,调用intro()方法打印我是:张三,今年:18岁,我在湖南中医药大学上学

  1. package case4;
  2. public class OverridingTest {
  3. public static void main(String[] args) {
  4. // 实例化子类对象s,调用intro()方法打印信息
  5. /********* begin *********/
  6. Student s=new Student("张三",18,"湖南中医药大学");
  7. s.intro();
  8. /********* end *********/
  9. }
  10. }
  11. class Person {
  12. /********* begin *********/
  13. String name;
  14. int age;
  15. Person(String name,int age){
  16. this.name=name;
  17. this.age=age;
  18. }
  19. void intro(){
  20. System.out.print("我是:"+name+",今年:"+age+"岁");
  21. }
  22. /********* end *********/
  23. }
  24. class Student extends Person{
  25. /********* begin *********/
  26. String school;
  27. Student(String name,int age,String school){
  28. super(name,age);
  29. this.school=school;
  30. }
  31. void intro(){
  32. super.intro();
  33. System.out.println(",我在"+this.school+"上学");
  34. }
  35. /********* end *********/
  36. }

第5关:final关键字的理解与使用

根据提示,在右侧编辑器Begin-End处补充代码:

  • 仔细阅读代码,在右侧编辑器中调整代码使程序能正确编译运行;

  • 具体输出要求请看测试说明。

这道题把原测试代码中的三个final去掉就可以通过

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/653708
推荐阅读
相关标签