首页 > 编程语言 >记录一次Java编程题(适合所有的新手哦)

记录一次Java编程题(适合所有的新手哦)

时间:2023-10-24 12:32:03浏览次数:32  
标签:proDate Java String void 编程 return 新手 public name

题目:

用Java编写以下代码:
1)定义一个抽象的商品类Production,包含商品号id、商品名name、商品价格price3个数据成员;
2)定义3个分别用来获取商品号、商品名、商品价格的成员方法;
3)定义一个抽象的输出数据成员信息的方法abstract void showInfo();注意使用适当的访问控制符对属性和方法进行修饰。
4)在此基础上定义继承于商品类的一个食品子类Food和一个玩具子类Toy,
5)除具有商品类的属性外,食品类还应包含生产日期proDate、保质期period;玩具类还应包含型号model、安全级别level;
6)食品类和玩具类上定义相应的方法来设置和获取以上属性;
7)食品类和玩具类上重写showInfo()方法,输出各自所有数据成员信息。

由1知,我们需要掌握抽象类如何定义。语法如下:

abstract class Production{}

定义:在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

由2知,我们需要定义多个成员方法。语法如下:

  访问修饰符 返回参数类型 方法名(形参列表){ //方法主体
      语句;
      return 返回值;
}

以获取商品号为例:

public int getId() {
        return 12;
    }

使用成员方法有什么好处呢?

1.提高代码的复用性;

2.可以将实现的细节封装起来,然后供其他用户来调用。

由3知,我们可以这样写:

public abstract void showInfo();

由4知,我们需要写一个继承类,什么是继承呢?通俗来讲,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。语法格式如下:

class 父类 {
}
 
class 子类 extends 父类 {
}

我们以Food类为例:

class Food extends Production{
}

那为什么要使用继承呢?

当代码存在重复了,导致后果就是代码量大且臃肿,而且维护性不高(维护性主要是后期需要修改的时候,就需要修改很多的代码,容易出错),所以要从根本上解决这两段代码的问题,就需要继承。

由5知,我们还需要添加两个属性,代码如下:

String proDate;
String period;

这个比较简单,我就不多做叙述了。

由6知,我们需要定义get和set方法来设置并获取以上添加的属性。代码如下:

public String getProDate() {
        return proDate;
    }
public void setProDate(String proDate) {
        this.proDate = proDate;
    }

由7知,我们需要重写showInfo()方法,代码如下:

@Override
public void showInfo() {
    System.out.println("Food's ID is:"+getId());
}

还有小萌新不知道重写和重载吗?可以看看下面这个菜鸟教程的链接哦!

https://www.runoob.com/java/java-override-overload.html

好,以上就是该题的所有讲解,下面是完整代码,仅供大家参考哦!

package demoJava;

abstract class Production{
    int id;
    String name;
    double price;

//    public Production(int id, String name, double price) {
//        this.id = id;
//        this.name = name;
//        this.price = price;
//    }

    public int getId() {
        return 12;
    }

    public String getName() {
        return name;
    }

    public double getPrice() {
        return price;
    }
    public abstract void showInfo();
}

class Food extends Production{
    String proDate;
    String period;

//    public Food(int id, String name, double price) {
//        super(id, name, price);
//    }

    public String getProDate() {
        return proDate;
    }

    public void setProDate(String proDate) {
        this.proDate = proDate;
    }

    public String getPeriod() {
        return period;
    }

    public void setPeriod(String period) {
        this.period = period;
    }

    @Override
    public void showInfo() {
        System.out.println("Food's ID is:"+getId());
    }
}
class Toy extends Production{
    String model;
    int level;

//    public Toy(int id, String name, double price) {
//        super(id, name, price);
//    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    @Override
    public void showInfo() {
        System.out.println("...");
    }
}
public class testJava {
    public static void main(String[] args) {
        Production production = new Food();
        production.showInfo();
    }
}

记录一次Java编程题(适合所有的新手哦)_子类

标签:proDate,Java,String,void,编程,return,新手,public,name
From: https://blog.51cto.com/u_16174658/8002488

相关文章

  • 华为云耀云服务器L实例 - java环境配置
     Java环境在云服务器上是为了支持Java应用程序的运行、开发和使用Java生态系统中的各种工具和库。它为开发人员提供了一个稳定和可靠的平台,使他们能够利用Java的强大功能来构建高性能、可扩展和安全的应用程序。1. 登录华为云耀云服务器L实例:使用SSH或远程桌面工具登录到您......
  • Java:自定义实现SpringBoot Starter
    (目录)1、自定义Starter1.1、项目结构$tree.├──pom.xml└──src├──main│├──java││└──com││└──example││└──demo││├──ReadingConfiguration.java......
  • Java医院绩效考核系统源码
    一、系统总体功能作为医院用综合绩效核算系统,系统需要和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作量,绩效考核系统设有手工录入功能(可以批量导入),对获取的数据系统按照设定的公式进行汇算,且设置审核机制,可以退回修......
  • Java中将Byte[] 转成封装类型
    今天做一个需求,需要将byte[]类型转换为Double和String,因此整理起来 Doublebyte[]转doublepublicDoublebyteArrayToDouble(byte[]bytes){if(bytes.length!=8){thrownewIllegalArgumentException("数据长度不符");}longlongBits=0;for(inti=0;i<8......
  • AI 编程语言 Mojo 登陆 Mac 平台
        Mojo是 ModularAI公司开发的一种编程语言,专门面向AI 设计,号称比Python快68000倍。官方今日宣布,Mojo现已开放本地下载运行,除了编译器之外,MojoSDK还包括一整套开发者和 IDE工具,可以用于构建和迭代Mojo应用。Mojo号称将动态和静态语言的优点结合在一起......
  • 如何使用Java Spring Boot 创建一个微服务项目 一?
    如何使用JavaSpringBoot创建一个微服务项目一?微服务现在更流行。它们可以用任何语言编写。在这篇文章中,让我们看看SpringBoot微服务。在本文中,我们看到一个基础项目currency-exchange-sample-service,它具有业务逻辑,并且可以在另一个项目 currency-conversion-sample-service ......
  • 如何使用Java Spring Boot 创建一个微服务项目 二?
    如何使用JavaSpringBoot创建一个微服务项目二?上一篇我们已经链接了如何使用JavaSpringBoot创建一个微服务项目一?这一篇我们接着实现第二部分微服务2:货币兑换样本服务这也是一个maven项目pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apac......
  • JavaScript 将对象转换为数组
    JavaScript将对象转换为数组在JavaScript中,你可以使用不同的方法将对象转换为数组,具体取决于对象的结构和你希望在数组中得到什么样的数据。以下是一些常见的方法:Object.keys()方法:这种方法将对象的键转换为数组。constobj={a:1,b:2,c:3};constarr=Object......
  • Java使用多线程异步执行批量更新操作方法
    一、核心技术Java提供了Executor框架来实现多线程任务的执行。我们可以通过创建ExecutorService对象来管理线程池,然后将任务提交给这个线程池执行。Executor框架的优点在于,它可以自动管理线程数量,以最大化利用CPU和内存资源。二、具体实现方法1、创建一个数据更新任务类,实现Run......
  • java.security.provider.getservice blocked
    bug:https://bugs.openjdk.org/browse/JDK-8206333堆栈:"Osp-Common-Business-Thread-572"Id=1723BLOCKEDatjava.security.Provider.getService(Provider.java:1035)atsun.security.jca.ProviderList.getService(ProviderList.java:332)atsun.security.jca......