• 实验五:面向对象编程实验(3)—多态和接口


    实验五

    实验项目:面向对象编程实验(3)—多态和接口

    实验时间:2019.4.15

    实验目的

    1. 掌握接口、内部类与多态性的概念
    2. 学习编写接口程序
    3. 掌握类的多态性的用法

    实验内容:

    必做

    1. 测试接口的用法:
       创建一个Vehicle接口,在接口中定义2个抽象方法:启动start()和刹车stop()。
       定义两个类Car和Bike,实现Vehicle接口,并具体实现接口start()和stop()方法 。
       创建另一个类Test_Vehicle,在main主方法中分别通过使用Vehicle接口创建关于Car 与Bike类的引用对象audi与yongjiu。
       使用接口Vehicle的两个引用对象分别调用各自的启动start()与刹车stop(),显示不同运输工具的多态性。

    源码:
    Vehicle.java

    package ex05;
    //新建交通工具接口
    public interface Vehicle {
    	//创建抽象方法
    	void start();
    	void stop();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    Car.java

    package ex05;
    
    public class Car implements Vehicle {
    	//对接Vehicle接口
    	// 实现接口中的抽象方法
    	public void start() {
    		System.out.println("汽车启动:转动钥匙,轻踩油门");
    	}
    
    
    	public void stop() {
    		System.out.println("汽车刹车:踩刹车");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    Bike.java

    package ex05;
    
    public class Bike implements Vehicle {
    //创建Bike类对接Vehicle接口
    	@Override
    	//实现接口中的抽象方法
    	public void start() {
    		System.out.println("自行车启动:一只脚蹬地,另一只脚踩脚踏");
    	}
    
    	@Override
    	public void stop() {
    		System.out.println("自行车刹车:手扣刹车");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    Test_Vehicle.java

    package ex05;
    
    public class Test_Vehicle {
    	//创建测试类
    
    	public static void main(String[] args) {          //程序入口
    		
    		Vehicle audi = new Car(); // 多态
    		
    		Vehicle yongjiu = new Bike();
    		
    		//调用接口中的抽象方法
    		audi.start();
    		
    		audi.stop();
    		
    		yongjiu.start();
    		
    		yongjiu.stop();
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    实验结果:
    在这里插入图片描述

    1. 多态
       建立一个抽象类Shape,其中包含一个抽象方法draw();
       建立两个子类J_Circle和J_Square,继承Shape,分别实现Shape中的抽象方法draw()
       建立Test_Shape类,创建一个J_Square类的对象sqare,再创建一个Shape关于J_Circle的引用对象circle;
       通过circle对象调用方法draw(),观察如何实现Shape类的多态性。
       问题:square对象是否实现多态性?Circle对象是否实现多态性?为什么?

    源码:
    Shape.java

    package ex05;
    
    public abstract class Shape {//创建抽象类
    	
    	public abstract void draw();//创建抽象方法
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    J_Circle.java

    package ex05;
    
    public class J_Circle extends Shape {
    
    	public void draw(){//实现父类抽象方法
    		
    		System.out.println();
    		
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    J_Square.java

    package ex05;
    
    public class J_Square extends Shape {
    
    	public void draw(){//实现父类抽象方法
    		
    		System.out.println();
    		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Test_Shape.java

    package ex05;
    
    public class Test_Shape {
    
    	public static void main(String[] args) {
    		Shape sqare = new J_Square();//多态
    		
    		Shape circle = new J_Circle();
    		
    		circle.draw();
    		//父类型circle作为引用指向新对象J_Circle()堆内存地址;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

     问题:square对象是否实现多态性?Circle对象是否实现多态性?为什么?
    答:square与circle对象都可以实现多态性;因为创建了共同的抽象父类,父类中含有二者的共同抽象属性,可通过继承父类实现多态性。

    运行结果:
    在这里插入图片描述

    实验总结:
    学习了接口的用法,学习了多态的使用。

  • 相关阅读:
    物联网AI MicroPython学习之语法 I2C总线
    2023自动化测试需知的4项测试工具!
    学习心得08:OpenGL
    基于惯性权值非线性递减的改进粒子群算法 - 附代码
    年后求职找B端产品经理?差点把自己坑惨了......
    在soc与mcu发送视频数据的过程中如何保证PTS的一致性和准确性
    OpenCV_Mat类对象常用属性值的获取方法
    丁鹿学堂前端培训:typescript中实现继承的写法简述
    大数据学习笔记1.3 Linux用户操作
    idea中maven自带Bundled (Maven 2)和Bundled (Maven 3)的文件目录位置
  • 原文地址:https://blog.csdn.net/interestANd/article/details/127576767