• 实验五:面向对象编程实验(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对象都可以实现多态性;因为创建了共同的抽象父类,父类中含有二者的共同抽象属性,可通过继承父类实现多态性。

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

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

  • 相关阅读:
    Git 命令
    网络安全(黑客)自学
    【历史上的今天】9 月 16 日:乔布斯的归来;苹果崛起;易语言发布
    mac清理垃圾的软件有哪些?这三款我最推荐
    linux - 简单上传下载文件(lrzsz、scp)
    手把手教你Nginx常用模块详解之ngx_stream_upstream_module(八)
    Winform UI界面设计例程——多线程访问UI控件
    [创业-43]:公司的组织架构--所有者与决策机构(股东)
    【C语言-程序编译】一行行代码究竟是怎么一步步到可执行程序的?
    v-if和v-for的优先级是什么?
  • 原文地址:https://blog.csdn.net/interestANd/article/details/127576767