文章目录

  • 前言
  • 1、Animal类
  • 2、Vehicle类
  • 3、USB模拟器
  • 4、总结



前言

多态在java中有很多种体现方式,不是一句话就可以概括的,要根据多种题目和方法才能体现多态在java中的形象,所以本文记载了有关JAVA的继承与多态的几个适合初学者的实验题、分析和代码,让大家通过对题目的操作对继承和多态有一个很好的认知。


1、Animal类

题目:创建Animal(动物)类:Mouse,Cat等的一个继承分级结构.在父类中提供适用于所有Animal的方法,并在子类中覆盖他们,从而根据不同类型的Animal采取不同的行动Anima类有如下方法:public void speak()。
分析:如题,Animal类中可以定义动物共有的动作,如吃东西,叫,跑,跳一类的是动物都会的,但是不同动物类实现起来,又各不相同,如猫是喵喵叫,而老鼠是吱吱叫,所以这些共有的动作应该在Animal这个父类中定义为抽象类,而实现起来就有其不同的子类如老鼠,猫这些子类来实现,这就形成了一种多态;所以类似这种的问题都可以定义一个抽象的父类,由多个子类来实现。最最重要的抽象类跟接口不能被实例化。而且抽象类中可以有0~n个抽象方法以及0-n个具体方法。
代码:

import java.util.Scanner;

abstract class  Animal{

public abstract void Speak();

}
class Mouse extends Animal{
    String name;
     public   Mouse(String name){
         this.name=name;
    }
    @Override
    public void Speak() {
        System.out.println(name+"的叫声吱吱");
    }
}
class  Cat extends Animal{
    String name;
    public Cat(String name){

        this.name=name;
    }

    @Override
    public void Speak() {
        System.out.println(name+"的叫声喵喵");
    }
}
 public  class ch01 {
     public static void main(String[] args){
             String name1,name2;
         Scanner in=new Scanner(System.in);
            name1=in.next();name2=in.next();
           Mouse mouse=new Mouse(name1);Cat cat=new Cat(name2);
            mouse.Speak();cat.Speak();


     }


}

2、Vehicle类

题目:编写一个制造各种车辆的程序。包含三个类,具体要求如下:
(1)基类Vehicle,包含轮子数和汽车自身重量两个属性,一个两参数的构造方法,一个显示汽车信息的方法;
(2)小轿车类Car,增加载客数属性,重写构造方法和显示车辆信息的成员方法;
(3)卡车类Truck,增加载客数和载货量属性,重写构造方法和显示车辆信息的成员方法;
(4)主程序类,要求输入各种车辆的信息,并在控制台输出各种车辆信息。
分析:Car 类 和Truck类都继承了Vehicle类并且重写了父类的构造方法和有了自己的独特属性,这就是多态的一种体现。看官还是要根据代码来理解其中的奥妙:

import java.util.Scanner;
class  vehicle{
    int wheel;
    double weight;
  public  vehicle(int wheel,double weight)
  {
      this.wheel=wheel;this.weight=weight;
  }
 public  void infoVehicle(){

     System.out.println("轮子数:"+wheel);
     System.out.println("自身重量:"+weight);
 }
}
class Car extends vehicle{
    int carry;
    public Car(int wheel,double weight,int carry)
 {      super(wheel,weight);
         this.carry=carry;
 }

    @Override
    public void infoVehicle() {
        System.out.println("小轿车:");
         super.infoVehicle();
        System.out.println("载客人数:"+carry);
    }
}
class Truck extends vehicle{
    int carry,cargo;
    public  Truck(int wheel,double weight,int carry,int cargo){
        super(wheel,weight);
        this.carry=carry;this.cargo=cargo;
    }

    @Override
    public void infoVehicle() {
        System.out.println("卡车:");
        super.infoVehicle();
        System.out.println("载客人数:"+carry);
        System.out.println("载货重量:"+cargo);
    }
}
 public  class ch01 {
     public static void main(String[] args){
         Scanner in=new Scanner(System.in);
      vehicle veh=new vehicle(in.nextInt(),in.nextDouble());
      Car    car=new Car(in.nextInt(),in.nextDouble(),in.nextInt());
      Truck truck=new Truck(in.nextInt(),in.nextDouble(),in.nextInt(),in.nextInt());
      veh.infoVehicle();car.infoVehicle();truck.infoVehicle();

     }


}

3、USB模拟器

题目:编写一个USB接口程序,模拟计算机启动过程和关闭过程启动过程中要加载鼠标、键盘、麦克风等USB设备,具体
要求如下:
(1)定义一个接口USB,包含两个抽象方法turnOn()he turnOff(),分别用于表示USB设备的启动和关闭
(2)编写鼠标Mouse、键盘KeyBoard、麦克风Mic类,实现接口中的turnOn()、turnOff()方法,方法中显示“XX设备
启动了”或“XX设备关闭了”即可
(3)编写计算机类Computer,要求有一个表示计算机上USB插槽数量的数组;添加USB设备的方法add(USB
usb),功能为遍历所有插槽,如果有空闲的就添加一个USB设备
模拟开机启动USB设备的powerOn()方法,功能为遍历所有USB接口,如果连接了USB设备,则启动USB设备,
然后显示“计算机开机成功”
模拟关机关闭USB设备的powerOff()方法,功能为遍历所有USB接口,如果连接了USB设备,则关闭USB设备,
然后显示“计算机关机成功”
(4)编写测试类,要求建立计算机对象,建立鼠标、键盘、麦克风对象,并添加到计算机中,启动计算机,关闭计算机

分析:这个题目涉及了对接口的定义以及实现,这是对接口的基础了解与应用,多个类可以实现同一个接口,但是实现的内容不一样,就像下面代码,同样实现USB接口,但是鼠标与键盘类实现出来执行的语句就不一样,这个题目可以让初学者初步了解与应用接口,对接口有一个比较深刻的印象。
看官还是根据代码来体会接口的奇妙之处:

import java.text.DecimalFormat;
import java.util.Scanner;
interface USB{
    void turnOn();
    void turnOff();
}
class Mouse implements USB{
    @Override
    public void turnOn() {
        System.out.println("鼠标启动了");
    }

    @Override
    public void turnOff() {
        System.out.println("鼠标关闭了");
    }
}
class  Mic implements USB{
    @Override
    public void turnOn() {
        System.out.println("麦克风启动了");
    }

    @Override
    public void turnOff() {
        System.out.println("麦克风关闭了");
    }

}
class Keyboard implements USB{
    @Override
    public void turnOn() {
        System.out.println("键盘启动了");
    }

    @Override
    public void turnOff() {
        System.out.println("键盘关闭了");
    }
}
class  Computer{
    USB[]  n=new USB[3];
    void  add(USB usb){
        for (int i=0;i<3;i++)
            if (n[i]==null)
            {n[i]=usb;break;}
    }
    void powerOn(){
        for (int i=0;i<3;i++)
            if (n[i]!=null)
             n[i].turnOn();
        System.out.println("计算机开机成功");

    }
    void powerOff(){
        for (int i=0;i<3;i++)
            if (n[i]!=null)
                n[i].turnOff();
        System.out.println("计算机关机成功");

    }


}
public  class ch01 {
    public static void main(String[] args){
        Computer  computer=new Computer();
        USB   mouse=new Mouse();
        USB   keyboard=new Keyboard();
        USB   mic=new Mic();
        computer.add(mouse);computer.add(keyboard);computer.add(mic);
        computer.powerOn();computer.powerOff();


    }


}

4、总结

Animal类中实现了子类继承父类并实现父类中抽象类的操作,这些操作是非常简单的,一看就会;Vehicle类实现了子类继承父类并重写父类方法还延伸出自己独特属性的操作,这些个操作体现了继承与多态,但是只要掌握好基础知识,操作起来也是非常简单的;USB模拟器它实现了接口的多种操作,虽然看起来麻烦但是理解了接口的知识的话,也就是那么回事,小菜一碟。总之,以上三道题都是初学者接触继承与多态的简单问题,虽然简单,但是这些个问题可以有效的帮助各位理解继承与多态,也希望各位在这里有稍许收获。