java练习题(面向对象前两天练习作业(继承多态接口和抽象类))

这篇博客主要提供了15道关于Java面向对象编程的练习题解答,涵盖了继承、多态、接口和抽象类等核心概念。通过这些实例,读者可以深入理解并巩固Java面向对象编程的知识。
摘要由CSDN通过智能技术生成

1.

【编号:1001】一位面向对象的程序员小李,在编程过程中需要描述和处理个人信息,于是定义了类Person,如下所示:
public class Person {
   
    private String name; // 姓名
    private int age; // 年龄
    private String birthday; // 生日

    /*
    getters and setters请自行生成
    */

    // 获取信息的方法
    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; // 所在学校

    /*
    getters and setters请自行生成
    */

    // 获取信息的方法
    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 {
   
//
//}
//
//class Zi extends Fu{
   
//    int num = 20;
//    public void method(){
   
//        int num = 30;
//        // 这里要求输出30
//        System.out.println();
//        // 这里要求输出20
//        System.out.println();
//        // 这里要求输出10
//        System.out.println(super.num);
//    }
//}
//
//public class Demo2 {
   
//    public static void main(String[] args) {
   
//        Zi z = new Zi();
//        z.method();
//    }
//}
//运行结果:
//        30
//        20
//        10

参考答案

class Fu {
   
int num = 10;
}

class Zi extends Fu{
   
    int num = 20;
    public void method(){
   
        int num = 30;
        // 这里要求输出30
        System.out.println(num);
        // 这里要求输出20
        System.out.println(this.num);
        // 这里要求输出10
        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();
    
  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值