Java日常练习题,每天进步一点点(38)

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技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C语言实现随机抽奖程序

    实现随机抽奖程序的过程中需要使用C语言中的随机数生成函数和数组等知识点。下面就是实现随机抽奖程序的详细攻略: 步骤一:包含头文件 在程序开始之前,需要先包含头文件<stdio.h>和<stdlib.h>。其中<stdio.h>包含了标准输入输出函数,<stdlib.h>包含了随机数生成函数rand和数组函数bs…

    C 2023年5月23日
    00
  • C语言实现自动售货机

    C语言实现自动售货机 介绍 自动售货机在我们的生活中随处可见,它们可以提高购物的便利性,节约时间和精力。本文介绍如何使用C语言实现一个简单的自动售货机。 设计思路 自动售货机主要包含以下几个部分:1. 商品展示界面2. 商品选择3. 支付界面4. 出货过程 实现步骤 1. 商品展示界面 首先需要在屏幕上显示商品的种类和价格,可以使用以下的代码块实现: pri…

    C 2023年5月23日
    00
  • Code Review 方法论与实践总结梳理

    Code Review 方法论与实践总结梳理 什么是 Code Review Code Review 是通过代码检查,帮助团队确保代码质量、减少缺陷量、加快交付速度的过程。这是一个让其他开发者检查你的代码、找出问题、修改错误和提出建议的过程。它可以在项目中的任何阶段执行,也可以在多个阶段完成。 Code Review 的重要性 Code Review 旨在改…

    C 2023年5月22日
    00
  • 基于C++中常见内存错误的总结

    让我来为您详细讲解一下“基于C++中常见内存错误的总结”的完整攻略。这篇攻略的目的是总结和介绍C++中常见的内存相关错误,帮助C++程序员更好地解决内存错误的问题。 概述 C++是一门高效并且功能强大的编程语言。然而,由于C++是一门面向底层的语言,程序员需要自己管理内存。如果内存管理不当,会导致一系列的内存错误,比如内存泄露、野指针等。这些内存错误很难被发…

    C 2023年5月22日
    00
  • C语言实现520表白代码 祝你表白成功!

    C语言实现520表白代码攻略 感谢您对C语言表白代码的关注。下面是实现520表白代码的完整攻略。 1. 准备工作 在开始实现520表白代码之前,需要安装C语言编译器。在Windows系统上,我们建议使用MinGW或者Visual Studio Code(带有C/C++扩展)作为编译器;在Linux系统上,可以使用GCC。 2. 编写C程序 我们可以通过在C程…

    C 2023年5月23日
    00
  • 浅谈C++空间配置器allocator

    浅谈C++空间配置器allocator 什么是空间配置器allocator C++中的空间配置器allocator是在使用new/delete进行内存管理的时候,对内存进行分配和释放的一种通用工具。allocator的主要目的是为了解决C++标准库中容器和算法在内存管理方面的低效问题。C++标准库提供了多个类型的allocator,可以满足不同场景下的需求。…

    C 2023年5月22日
    00
  • VScode中添加头文件和源文件(C/C++)的方法

    添加头文件和源文件是开发C/C++程序的必备步骤,本文将详细讲解在VScode中添加头文件和源文件的方法,以便程式师开发更加便捷。 添加头文件 要在VScode中添加头文件,需要按照以下步骤进行操作: 1.为了创建一个C/C++项目,您需要在终端中使用以下命令来创建一个名称为myproject的新目录: mkdir myproject cd myprojec…

    C 2023年5月23日
    00
  • 深入解析C语言中的内存分配相关问题

    深入解析C语言中的内存分配相关问题 概述 在C语言中,内存分配是至关重要的。这是因为在C语言中,程序员需要手动地分配和释放内存以存储数据。C语言提供了几种内存分配方式,包括数据段、栈和堆。使用不当的内存分配方法可能导致程序运行时出现各种严重的问题,例如内存泄漏和段错误。本攻略将重点介绍C语言中的内存分配方式,并提供一些示例以帮助您更好地理解内存分配的概念。 …

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部