题目:
用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();
}
}
标签:proDate,Java,String,void,编程,return,新手,public,name
From: https://blog.51cto.com/u_16174658/8002488