一、 实验目的大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。
如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!!
Good better best, never let it rest, until good is better, and better best.近期会把自己本科阶段的一些课程设计、实验报告等分享出来,供大家参考,希望对大家有帮助。
博客更新至专栏【课程设计实验报告】:https://blog.csdn.net/weixin_43598687/category_11640051.html
1、 掌握子类的继承与子类对象的创建;
2、 掌握方法的继承与重写;
3、 掌握用上转型对象和接口回调实现运行时多态。
- 完成第5章习题5 使用抽象类设计一个动物的“模拟器”,希望可以模拟许多动物的叫声,要求使用上转型对象实现运行时多态。
- 货车要装载一批货物,货物有三种商品组成:电视、计算机和洗衣机。卡车需要计算出整批货物的重量。要求:
1)有一个ComputeWeight接口,该接口中有一个方法:Public double computeWeight()
2)有三个实现该接口的类:Television,Computer,WashMachine。这三个类通过实现computeWeight接口给出自重。
3)有一个Truck类,该类用ComputeWeight接口类型的数组作为成员。那么该数组的成员就可以存放Television对象的引用,Computer对象的引用,WashMachine对象的引用。程序能输出Truck对象所装载的货物的总重量。 - 编程模拟中国人、美国人是人,四川人是 中国人。除主类外,程序还有4个类:People,ChinaPeople,AmericanPeople,SichuanPeople。其UML类图如下:
要求:
1)People类有两个protected属性和3个public 方法。
2)ChinaPeople类是People类的子类,新增了void chinaGongfu()方法。要求ChinaPeople类重写父类的3个方法。
3)AmericanPeople类是People类的子类,新增了void americanBoxing()方法。要求ChinaPeople类重写父类的3个方法。
- 有一个abstract 类,类名为Employee。Employee的子类有YearWorker、MonthWorker和WeekWorker。YearWorker对象按年领取薪水,MonthWorker按月领取薪水,WeekWorker按周领取薪水。要求如下:
1)Employee类有一个abstract 方法: public abstract double earnings();
2)子类必须重写父类的earnings()方法,给出各自领取报酬的具体方式。
3)有一个Company类,该类用Employee数组作为成员,Employee数组的单元可以是YearWorker对象的上转型对象、MonthWorker对象的上转型对象或WeekWorker对象的上转型对象。
4)程序能输出Company对象一年需要支付的薪水总额。
abstract class Animal{
abstract void cry();
abstract void getAnimalName();
}
class Simulator{
void playSound(Animal animal) {
animal.cry();
animal.getAnimalName();
}
}
class Dog extends Animal{
void cry() {
System.out.println("汪汪汪");
}
void getAnimalName() {
System.out.println("dog");
}
}
class Cat extends Animal{
void cry() {
System.out.println("喵喵喵");
}
void getAnimalName() {
System.out.println("cat");
}
}
public class one {
public static void main(String[] args) {
Simulator simulator = new Simulator();
simulator.playSound(new Dog());
simulator.playSound(new Cat());
}
}
interface ComputeWeight{
public double computeWeight();
}
class Television implements ComputeWeight{
@Override
public double computeWeight() {
// TODO Auto-generated method stub
double weight = 40;
System.out.println("Television的重量为:" + weight + "kg");
return weight;
}
}
class Computer implements ComputeWeight{
@Override
public double computeWeight() {
// TODO Auto-generated method stub
double weight = 5;
System.out.println("Computer的重量为:" + weight + "kg");
return weight;
}
}
class WashMachine implements ComputeWeight{
@Override
public double computeWeight() {
// TODO Auto-generated method stub
double weight = 50;
System.out.println("WashMachine的重量为:" + weight + "kg");
return weight;
}
}
class Truck{
public ComputeWeight cw[];
public void getWeight(ComputeWeight cw[]) {
double totle = cw[0].computeWeight() + cw[1].computeWeight() + cw[2].computeWeight();
System.out.println("总重量为:" + totle);
}
}
public class two {
public static void main(String[] args) {
Truck truck = new Truck();
ComputeWeight[] cw = {new Television(),new Computer(),new WashMachine()};
truck.getWeight(cw);
}
}
class People{
protected double height;
protected double weight;
public void speakHello() {
System.out.println("Hello 我是人");
}
public void averageHeight() {
System.out.println("人的平均身高");
}
public void averageWeight() {
System.out.println("人的平均体重");
}
}
class ChinaPeople extends People{
public void chinaGongfu() {
System.out.println("chinaGongfu");
}
public void speakHello() {
System.out.println("Hello 我是中国人");
}
public void averageHeight() {
System.out.println("中国人的平均身高");
}
public void averageWeight() {
System.out.println("中国人的平均体重");
}
}
class AmericanPeople extends People{
public void AmericanBoxing() {
System.out.println("AmericanBoxing");
}
public void speakHello() {
System.out.println("Hello 我是美国人");
}
public void averageHeight() {
System.out.println("美国人的平均身高");
}
public void averageWeight() {
System.out.println("美国人的平均体重");
}
}
class SichuanPeople extends ChinaPeople{
public void sichuanHotpot() {
System.out.println("sichuanHotpot");
}
public void speakHello() {
System.out.println("Hello 我是四川人");
}
public void averageHeight() {
System.out.println("四川人的平均身高");
}
public void averageWeight() {
System.out.println("四川人的平均体重");
}
}
public class three {
public static void main(String[] args) {
}
}
abstract class Employee{
public abstract double earning();
}
class YearWorker extends Employee{
@Override
public double earning() {
// TODO Auto-generated method stub
return 120000;
}
}
class MonthWorker extends Employee{
@Override
public double earning() {
// TODO Auto-generated method stub
return 10000;
}
}
class WeekWorker extends Employee{
@Override
public double earning() {
// TODO Auto-generated method stub
return 2500;
}
}
class Company{
public void getSalary(Employee[] employee) {
double totle =0.0;
for (Employee e : employee) {
totle+=e.earning();
}
System.out.println("所需要支付的薪水总额为:" + totle);
}
}
public class four {
public static void main(String[] args) {
Employee[] employee = {new YearWorker(),new YearWorker(),new MonthWorker(),new MonthWorker(),new WeekWorker()};
Company company = new Company();
System.out.print("两个年薪,一个月薪,两个周薪");
company.getSalary(employee);
}
}
3. 实验结果
无输出结果
- *** 作系统:WINDOWS 10
- 开发工具:JDK 1.8 和 Eclipse
- 实验设备:PC
1)继承可以从基类中获得派生类中不曾定义过的成员,提高了编程效率;
2)继承与派生分为共有、私有、保护三种继承方式,其中共有使用最广泛,他使得派生类与基类中的成员有相同的属性;
3)在一个类中定义另一个类的对象时,此时初始化时要用对象名来调用初始化函数。调用对应的函数时,要用对象名来调用它的函数
4)类中abstract函数时,继承的类必须重写此方法
博客更新至专栏【课程设计实验报告】:https://blog.csdn.net/weixin_43598687/category_11640051.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)