Java程序设计实验-实验五

发布于 2024-04-29  713 次阅读


实验五 接口与多态

1 - [OJ2044]接口与多态1

请参照下面的程序框架,完成对应的实验内容。

class Animal{
    protected int leg;
    //无参构造方法
   

    //带参数构造方法
    
    //空的soundp()方法
   
}


interface  Flyable{
    //接口中定义 public int MySpeed()抽象方法
}


//Glede 类继承Animaol 并实现 Flyable接口

class Glede extends  ........{
    private int speed;
    //无参构造方法
    
    //有参构造方法
    
    //重写MySpceed()方法,返回speed属性值。
    

    //重写sound()方法,输出 "嘎......"
   

    //重写toStrring()方法, 输出格式如:Glede:leg=2 speed=20
    
}

public class Main {
    public static void main(String[] args) {
        //输入两组leeg和speed数据
        
        //创建Glaede对象数组,包括两个元素。
        

        //打印输出第1个元素


       
        //调用第一个元素的soumnd()方法
      

        //打印输出第2个元素


        //调用第2个元素的sound()方法
        
    }
}
import java.util.Scanner;
class Animal{
    protected int leg;
    //无参构造方法
    public Animal(){
        leg = 0;
    }
    //带参数构造方法
    public Animal(int leg){
        this.leg = leg;
    }
    //空的sound()方法
    public void sound(){
    }

}


interface  Flyable{
    //接口中定义 public int MySpeed()抽象方法
    public int MySpeed();
}


//Glede 类继承Animal 并实现 Flyable接口
class Glede extends Animal implements Flyable{
private int speed;
//无参构造方法
public Glede(){
    speed = 0;
}
//有参构造方法
public Glede(int leg, int speed){
    super(leg);
    this.speed = speed;
}
//重写MySpeed()方法,返回speed属性值。
@Override
public int MySpeed(){
    return this.speed;
}
//重写sound()方法,输出 "嘎......"
@Override
public void sound(){
    System.out.println("嘎......");
}
//重写toString()方法, 输出格式如:Glede:leg=2 speed=20
@Override
public String toString(){
    return "Glede:leg=" + leg + " speed=" + speed;
}
}

public class Main {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int leg1, leg2, speed1, speed2;

        //输入两组leg和speed数据
        leg1 = input.nextInt();
        speed1 = input.nextInt();
        leg2 = input.nextInt();
        speed2 = input.nextInt();
        //创建Glede对象数组,包括两个元素。
        Glede[] gledes = new Glede[2];
        gledes[0] = new Glede(leg1, speed1);
        gledes[1] = new Glede(leg2, speed2);
        //打印输出第1个元素
        System.out.println(gledes[0]);
        //调用第一个元素的sound()方法
        gledes[0].sound();
        //打印输出第2个元素
        System.out.println(gledes[1]);
        //调用第2个元素的sound()方法
        gledes[1].sound();

    }
}

2 - [OJ2045]接口与多态2

参照如下程序框架,完成相应的实验内容。

//定义PCI接口,包含  public void start()  ppublic void stop() 两个抽象方法
interface PCI{
   
}

//定义NetworkCard类实现PCI接口,并实现接口中的方法。
// start()方法输出 "sending data……"
// stop() 方法输出  "netwoork stop"
class NetworkCard ............
{

   
}
//定义SoundCard类实现PCI接口,并实现接口中的方法。
// start()方法输出 "duduc......"
// stop() 方法输出  "sound stop"
class SoundCard ............
{

   
}
//定义MainBoard类,并在其中定义 public void  userPCICard(PCI p)方法
//在 public void usePCICard(PCI p)中 分别启动start()和stop()方法
class MainBoard{
    public void  usePCICard(PCI p)
    {
       .................
    }
}

public class Main {
    public static void main(String[] args) {
        //分别创建NeetworkCard对象、SoundCard对象、MainBoard对象
        
        //用MainBoard对象的usePCICard方法实现网卡、声卡的启动和关闭


        /* 输出的信息为:
           sending data……
           network stop
           dudu......
           sound stop
         */

    }
}
//定义PCI接口,包含  public void start()  public voaid stop() 两个抽象方法
interface PCI{
    public void start();
    public void stop();

}
//定义NetworkCard类实现PCI接口,并实现接口中的方法。
// start()方法输出 "sending data……"
// stop() 方法输出  "network stop"
class NetworkCard implements PCI {
    public void start(){
        System.out.println("sending data……");
    }
    public void stop(){
        System.out.println("network stop");
    }

}
//定义SoundCard类实现PCI接口,并实现接口中的方法。
// start()方法输出 "dudu......"
// stop() 方法输出  "sound stop"
class SoundCard implements PCI {
    public void start(){
        System.out.println("dudu......");
    }
    public void stop(){
        System.out.println("sound stop");
    }

}
//定义MainmBoard类,并在其中定义 public void  usePCICard(PCI p)方法
//在 public void usePCICard(PCI p)中 分别启动start()和stop()方法
class MainBoard{
    public void usePCICard(PCI p) {
        p.start();
        p.stop();

    }
}

public class Main {
    public static void main(String[] args) {
        //分别创建NetworkCard对象、SoundCard对象、MainBoard对象
        NetworkCard networkCard = new NetworkCard();
        SoundCard soundCard = new SoundCard();
        MainBoard mainBoard = new MainBoard();
        //用MainBoard对象的usePCICard方法实现网卡、声卡的启动和关闭
        mainBoard.usePCICard(networkCard);
        mainBoard.usePCICard(soundCard);
        /* 输出的信息为:
           sending data……
           network stop
           dudu......
           sound stop
         */

    }
}