1.设计一个排序类IntSort,该类中包含3个同名的方法sort,分别完成2个整型数、3个整型数以及整型数组(10个数)的排序。编写测试类完成方法的验证。
实验程序:

package Test;public class IntSort {public void sort(int a,int b){System.out.println("两个整数排序的结果:");if(a>b){System.out.println(b+"<"+a);}else{System.out.println(a+"<"+b);}  }public void sort(int a,int b,int c){System.out.println("三个整数排序的结果:");if (a>b){if(c>a){System.out.println(b+"<"+a+"<"+c);}else if(c<b){System.out.println(c+"<"+b+"<"+a);}else{System.out.println(b+"<"+c+"<"+a);}}else {if(c<a){System.out.println(c+"<"+a+"<"+b);}else if(c>b){System.out.println(a+"<"+b+"<"+c);}else{System.out.println(a+"<"+c+"<"+b);}}}public void sort(int[] array){for(int i=1;i<array.length;i++){for(int j=0;j<array.length-i;j++){if(array[j]>array[j+1]){int temp=array[j];array[j]=array[j+1];array[j+1]=temp;}}}showArray( array);}public void showArray(int[] array){System.out.println("整形数组排序结果:");System.out.println("升序:");for(int i=0;i<array.length;i++){System.out.println(array[i]+" ");}}public static void main(String args[]){IntSort i=new IntSort();i.sort(10, 20);i.sort(2, 8, 4);int[] array={21,36,58,256,12,9};i.sort(array);}
}

实验结果:

  1. 高考入学考试课程为三门,每门满分为100分。在高考招生时,大学录取规则为取最低分数线是180分,而重点大学重写录取规则为录取最低分数线是220分。试利用多态中方法的覆盖实现该功能。测试类和上面的两个类(父类、子类)分开。(类继承)
    实验程序:
    (1) University类
package Test;public class University {void enterRule(double math,double english,double chinese){double total=math+english+chinese;if(total>=180)System.out.println(total+"分数达到大学录取分数线");elseSystem.out.println(total+"分数未达到大学录取分数线");}
}

(2) ImportantUniversity类

package Test;
public class ImportantUniversity extends University{void enterRule(double math,double english,double chinese){double total=math+english+chinese;if(total>=220)System.out.println(total+"分数达到大学录取分数线");elseSystem.out.println(total+"分数未达到大学录取分数线");}
}

(3)测试类

package Test;public class Test {public static void main(String[] args){double math=92,english=86,chinese=75;ImportantUniversity iun=new ImportantUniversity();iun.enterRule(math, english, chinese);math=68;english=60;chinese=76;iun.enterRule(math,english,chinese);}
}

实验结果:

3. 定义一个接口Shape2D,使用该接口实现二维几何图形类Circle(圆形)和Rectangle(矩形)面积的计算,编写实现接口的类文件以及测试类文件。(接口和两个实现,注意用向上转型)
实验程序:
(1)Shap2D接口

package Test;interface Shap2D {public void draw();
}

(2) Circle类

package Test;public class Circle {float r;final double pi=3.1415927;public Circle(float r){this.r=r;}public void draw(){double s=pi*r*r;System.out.println("圆的面积:"+s);}
}

(3) Rectangle类

package Test;public class Rectangle {float a,b;public Rectangle(float a,float b){this.a=a;this.b=b;}public void draw(){float s=a*b;System.out.println("矩形面积:"+s);}
}

(4)测试类

Package Test;public class Figure {public static void main(String[] args){Circle c=new Circle(5);Rectangle r=new Rectangle(2, 5);c.draw();r.draw();}
}

实验结果:

4.使用多态编程解决如下问题:一个主人养了猫和狗,猫和狗都有自己爱吃的东西,主人在喂它们的时候,如果先判断是猫还是狗,再判断他们分别爱吃什么,就显得很麻烦。如果主人养了很多种动物,这样的重复判断,就会浪费很多时间。有什么办法,能让主人拿到一种食物就知道这是哪种动物的,就好了。(接口,向上转型)
实验程序:
(1)动物类

package Test;public class Animal {int age;String name;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}// 动物类里面有叫和吃两个方法public void cry() {System.out.println("我不知道叫什么");}public void eat() {System.out.println("我不知道吃什么");}
}

(2)狗类

package Test;class Dog extends Animal {// 覆盖(重写)方法public void cry() {System.out.println("旺旺");}public void eat() {System.out.println("我是狗,我爱吃骨头");}
}

(3)猫类

package Test;class Cat extends Animal {// 覆盖(重写)方法public void cry() {System.out.println("喵喵");}public void eat() {System.out.println("我是猫,我爱吃鱼");}
}

(4)食物类

Package Test;class Food {String name;public String getName() {return name;}public void setName(String name) {this.name = name;}// 食物类里面让它有一个方法public void showName() {}
}

(5)鱼类

package Test;class Fish extends Food {public void showName() {System.out.println("食物:鱼");}
}

(6)骨头类

package Test;class Bone extends Food {public void showName() {System.out.println("食物:骨头");}
}

(7)主人类

Package Test;class Master {// 给动物喂食物,如果没有多态,他要写给猫喂食和给狗喂食两个方法// 有了多态,以后即使再来好多动物,用这一个函数就可以了public void feed(Animal an, Food f) {an.eat();f.showName();}
}

(8)测试类

package Test;public class DuoTaiDemo {public static void main(String args[]) {Master master = new Master();master.feed(new Dog(), new Bone());// hin方便,可以再试试master.feed(new Cat(), new Fish());}
}

实验结果:

5.定义一组交通工具类,包括汽车类(AutoMobile)、飞机类(Plane)、船类(Ship),其中汽车类有坦克(Tank)、卡车(Truck)、小汽车(Car),飞机类有客机(AirLiner)、战斗机(FighterPlane),船类有子类游艇(Yacht)、军舰(WarShip),坦克、战斗机和军舰都具有攻击的功能,抽象并定义这些类,通过抽象类和接口以及对应的实现类实现多态和这些类的测试。
实验程序:
(1)火车类

package Test;public interface Fire {void fire();
}

(2)汽车类

package Test;public abstract class AutoMobile {public AutoMobile() {System.out.println("AutoMobile无参构造函数已构建");}
}

(3)坦克类

package Test;public class Tank extends AutoMobile{public Tank() {}
}

(4)卡车类

package Test;
public class Truck extends AutoMobile implements Fire{String name=null;public Truck(String str) {System.out.println("Truck有参构造函数已构建");name=str;}@Overridepublic void fire() {System.out.println(name+"攻击方式:"+"piupiu~~");}
}

(5)小汽车类

package Test;public class Car extends  AutoMobile{public Car() {}
}

(6)飞机类

package Test;public abstract class Plane {public Plane() {System.out.println("Plane无参构造函数已构建");}
}

(7)客机类

package Test;public class AirLine extends Plane {public AirLine() {}
}

(8)战斗机

package Test;public class FighterPlane extends Plane implements Fire{String name;public FighterPlane(String str) {System.out.println("FighterPlane有参构造函数已构建");name=str;}@Overridepublic void fire() {System.out.println(name+"攻击:"+"xiuxiu~~");}
}

(9)轮船类

package Test;
public class Ship {public Ship() {System.out.println("Ship无参构造函数已构建");}
}

(10)游艇类

package Test;public class Yacht extends Ship{public Yacht() {}
}

(11)军舰类

package Test;public class WarShip extends Ship implements Fire{String name=null;public WarShip(String str) {System.out.println("WarShip有参构造函数已构建");name=str;}@Overridepublic void fire() {System.out.println(name+"攻击方式:"+"嗵嗵~~");}
}

(12)测试类

package Test;public class Test {public static void main(String[] args) {Fire truck= new Truck("中国99坦克");Fire fighterPlane=new FighterPlane("歼-10");Fire warship=new WarShip("俄罗斯的“1144”型巡洋舰");truck.fire();fighterPlane.fire();warship.fire();}

实验结果:

Java——多态与接口相关推荐

  1. JAVA多态/封装/接口/包/包的命名规则——java面向对象

    Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态的优点 消除类型之间的耦合关系 可替换性 可扩充性 接口性 灵活性 简化性 多态存在的三个必要条件 继承 重写 父类引用指向子类 ...

  2. java 多态,接口,抽象类的认识

    1, 多态 : 父类的引用指向子类对象,有继承,有重写 多态表达了  :  cat 是一种 Animal 规则 : 多态对象不能调用父类中没有的方法 定义 :   Animal cat = new C ...

  3. Java 多态,接口

    package traffic;public class traffictool {public void go() {System.out.println(); ///子类将重写之,不能省去 } / ...

  4. 类与接口(五)java多态、方法重写、隐藏

    一.Java多态性 面向对象的三大特性:封装.继承.多态. 多态的类型,分为以下两种: 编译时多态: 指的是 方法重载.编译时多态是在编译时确定调用处选择那个重载方法,所以也叫 静态多态,算不上真正的 ...

  5. 【java学习之路】(java SE篇)(讨论与思考)关于继承,封装,多态,接口的简单实现与思考

    题目一 编写一个Person抽象类,要求含有姓名(name)年龄(age)两个私有属性以及吃饭(eat) 和睡觉(sleep)两个抽象方法, 并写出带参构造方法,创建学生(student)和工人(wo ...

  6. 【Java程序设计】接口与多态

    接口与多态 文章目录 接口与多态 一.接口 (1)接口概述 1.接口与类相似点: 2.接口与类的区别: 3.接口特性 4.抽象类和接口的区别 5.接口的作用 (2)接口的声明 (3)接口的实现 (4) ...

  7. 【Java】继承、多态、接口

    Java中的继承.多态和接口 1.用类比引入继承概念 众所周知,Java是一门面向对象的语言.如果我们要设计多种多样的交通工具,比如汽车.火车.飞机,虽然这些工具功能不同.形态不同,但是他们很多的基本 ...

  8. Java学习 day11 (继承与多态)接口、多态

    前言: 前天我们学习了继承,子类可以在父类的基础上重写父类内容,这样很容易误伤很多固定用法,已经写好的类,为了避免这种情况,java提供了final关键字,用来修饰不可改变内容. 我的理解是,类似于我 ...

  9. 面试轻松讲清楚 Java 面向对象的问题与知识(类与对象,封装,继承,多态,接口,内部类...)

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

最新文章

  1. 在内核中添加系统调用
  2. tf.reduce_max用法
  3. jQuery获取URL的GET参数值
  4. Kafka 消费者组 Rebalance 详解
  5. Python新手学习基础之数据结构-序列2
  6. jenkins source files 和 Remove Prefix 用户
  7. oracle游标fetch_SQL游标@@ FETCH_STATUS函数概述
  8. 尝试加载Crystal Reports 运行时时出错
  9. 计算机基础知识测试1,计算机基础知识测试试题及答案(网络)1
  10. proteus不能打开一直在开启界面转圈
  11. apue第三版P106:ftw程序中使用的path_alloc
  12. P5.js码绘---阿珊自画像
  13. 手机显示屏LCDTP的不同贴合工艺
  14. 数据通信与计算机网络课后习题
  15. 超炮主题曲用计算机谱,fripsideLevel5 Judgelight(《某科学的超电磁炮》动漫主题曲)歌词-查字典简谱网...
  16. Long类型数据比较
  17. win7电脑怎么提升开机速度?
  18. ps怎么修改图片上的数字(适用于图片上已有的数字)
  19. 模式识别学习笔记——第2章—2.4 两类错误率、Neyman-Pearson决策与ROC曲线
  20. 论文笔记:Densely Connected Convolutional Networks (2017 CVPR)

热门文章

  1. 金蝶专业版怎么反过账当月_金蝶KIS专业版如何反结账反过账?
  2. HTML+CSS之设置元素的水平垂直居中
  3. Mac 简单免费的外网映射(其他系统类似)
  4. SpringBoot配置文件数据库密码加密
  5. 「光驱」先锋 DVD-121SA 吸盘式
  6. 多线程笔记 | 线程调度模型
  7. usb root hub的启用和设备的识别(1)
  8. 如何利用起闲置的U盘安装一个移动系统(如何安装Edgeless)
  9. idea安装jclasslib插件显示乱码【已解决】
  10. Hexo-NexT主题中文目录不跳转的解决方法