关键词:
一、什么是多态?
同样的物质,在不同的条件下,所呈现出来状态是不同的。
//类名 对象名 = new 类名(); Dog d = new Dog(); Penguin p = new Penguin();
二、使用
父类的引用指向子类的实例
语法:1、父类名 父类引用 =new 子类名();
三、向上转型
父类的引用指向子类对象,自动进行类型转换
<父类型> <引用变量名>=new <子类型>();
//语法 Pet dog=new Dog();
四、向下转型
将一个指向子类对象的父类引用赋给一个子类的引用,即:父类类型转换为子类类型,需要强制转换。
<子类型> <引用变量名>=(<子类型>) <父类的引用变量>;
//语法 Dog dog=(Dog)pet
五、编写一个汽车租赁系统
1、编写父类汽车类,抽象方法为计算租金。
//汽车类 public abstract class MotoVehicle //车牌号 品牌 日租金 private String no; private String brand; private int perRent; //构造方法:车牌号 品牌 日租金 public MotoVehicle(String no, String brand, int perRent) this.no = no; this.brand = brand; this.perRent = perRent; //set/get方法 public String getNo() return no; public void setNo(String no) this.no = no; public String getBrand() return brand; public void setBrand(String brand) this.brand = brand; public int getPerRent() return perRent; public void setPerRent(int perRent) this.perRent = perRent; //抽象方法:计算租金 public abstract float calcRent(int days);
2、子类:小轿车类
//轿车类 public class Car extends MotoVehicle private String type; //构造方法:车牌号 品牌 日租金 类型 public Car(String no, String brand, int perRent,String type) super(no,brand,perRent); this.type=type; //set/get方法 public String getType() return type; public void setType(String type) this.type = type; @Override public float calcRent(int days) float price=this.getPerRent()*days; if(days>7&&days<=30) //大于7天小于30天9折 price*=0.9f; else if(days>30&&days<=150) price*=0.8f; else if(days>150) price*=0.7f; return price;
3.子类:Bus类
public class bus extends MotoVehicle //私有属性座位 private int seatCount; //构造方法:车牌号 品牌 日租金 座位 public bus(String no, String brand, int perRent,int seatCount) super(no,brand,perRent); this.seatCount=seatCount; //set/get方法 public int getSeatCount() return seatCount; public void setSeatCount(int seatCount) this.seatCount = seatCount; @Override public float calcRent(int days) float price=this.getPerRent()*days; if(days>3&&days<=7) price*=0.9f; else if(days>=7&&days<30) price*=0.8f; else if(days>=30&&days<=150) price*=0.7f; else if(days>=150) price*=0.6f; return price;
4、汽车业务类
public class VehicleOperation //汽车业务类 MotoVehicle []motoVehicle=new MotoVehicle[5]; //汽车数组 //初始化几个汽车信息 public void show() motoVehicle[0]=new Car("苏A6666","宝马",800,"520i"); motoVehicle[1]=new Car("苏A1111","宝马",500,"x6"); motoVehicle[2]=new Car("苏A2222","别克",600,"林荫大道"); motoVehicle[3]=new Car("苏A8888","宝马",710,"GL8"); motoVehicle[4]=new bus("苏A9999","金龙",800,24); //父类类型作为返回值 //租车 //参数 品牌 座位数 型号 public MotoVehicle rentMontoVehicle(String brand,int seatCount,String type) MotoVehicle v= null; //循环是小汽车还是大巴车 for(MotoVehicle motovehicle:motoVehicle) if( motovehicle instanceof Car) Car car=(Car) motovehicle; //向下转型 //轿车品牌和型号与用户想要的品牌信号吻合 if(car.getBrand().equals(brand)&&car.getType().equals(type)) v=car; break; else bus b=(bus)motovehicle; if(b.getBrand().equals(brand)&&b.getSeatCount()==seatCount) v=b; break; return v;
5、测试类
//汽车租赁系统测试类 public class TestRent public static void main(String[] args) Scanner input=new Scanner(System.in); System.out.println("*********欢迎来到汽车租赁公司!**********"); System.out.print("请选择亲您需要租赁的车型:1、轿车 2、客车"); int vehicleType=input.nextInt(); //获取用户租赁汽车的三个条件;:品牌 座位数 型号 String brand=""; int seatCount=0; String type=""; switch( vehicleType) case 1: System.out.print("请选择您要租赁的汽车品牌: 1、别克 2、宝马"); int choose =input.nextInt(); if(choose==1) brand="别克"; System.out.print("请选择您需要租赁的类型:1、林荫大道 2、GL8"); type=(input.nextInt()==1)?"林荫大道":"GL8"; else brand="宝马"; System.out.print("请选择您需要租赁的类型:1、x6 2、520i"); type=(input.nextInt()==1)?"x6":"520i"; break; case 2: System.out.println("请选择您要租赁的汽车品牌:1、金杯 2、金龙"); brand =(input.nextInt()==1)?"金杯":"金龙"; System.out.println("请选择需要租赁的座位数:"); seatCount=(input.nextInt()==1)?16:34; break; VehicleOperation vehicleOper=new VehicleOperation(); vehicleOper.show(); MotoVehicle m=vehicleOper.rentMontoVehicle(brand, seatCount, type); System.out.println("请输入您需要租赁的天数:"); int days=input.nextInt(); float price=m.calcRent(days); System.out.println("您的汽车车牌号为:"+m.getNo()); System.out.println("您需要支付租赁费用:"+price+"元");
6、实现效果
面向对象——多态(代码片段)
多态1.多态和多态性多态:指同一种事物的多种形态。比如水,可以是水蒸汽、雪、雨等多种形态。多态性:指的是可以在不考虑对象的类型的情况下而直接使用对象。(1).例子一s1="hello"s2="world"d1=500d2=20print(s1+s2)#helloworldprint(d1+d2)... 查看详情
面向对象多态(代码片段)
多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类... 查看详情
面向对象之多态(代码片段)
多态的概念多态指的是一类事物的多种形态,例如水有固态、液态、气态,动物有人、狗、猪,这是动物的不同形态。可能你会领悟,人狗猪不是继承于动物类吗?没错,多态在程序中的表现形式就是依赖于继承多态性那多态到... 查看详情
面向对象-通过代码分析多态(代码片段)
多态是面向对象的三大特性之一,我们今天重点来聊聊多态,并且将代码与多态的概念进行对应和映射。“多态”的概念:多态是指为不同数据类型的实体提供统一的接口,也就是同一操作作用于不同的对象,... 查看详情
面向对象---多态(代码片段)
一、什么是多态? 同样的物质,在不同的条件下,所呈现出来状态是不同的。//类名对象名=new类名();Dogd=newDog();Penguinp=newPenguin(); 二、使用 父类的引用指向子类的实例 语法:1、父类名&n... 查看详情
java面向对象三大特征之继承和多态(代码片段)
...转型多态代码案例总结前言 上一篇博客我们介绍了Java面向对象思想以及三大特征之一的封装。本文将介绍面向对象三大特征的剩下两个特征——继承和多态,我个人认为继承和多态是三个特征中比较重要且理解起来稍有... 查看详情
面向对象之多态与多态性(代码片段)
一、多态 1、定义:指的是一类事物的多种形态,如水有液体、气体和固体三种形态, 动物有人、猫、狗等存在形态。 2、示例:#!/usr/bin/envpython3#-*-coding:utf-8-*-importabcclassAnimal(metaclass=abc.ABCMeta):#同一类事物@abc.abstract... 查看详情
5_面向对象-中之面向对象的特征三:多态性(代码片段)
1.多态性的理解:可以理解为一个事物的多种形态。2.何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)举例:Personp=newMan();Objectobj=newDate();3.多态性的使用:虚拟方法调用 >有了对象... 查看详情
java面向对象之多态(代码片段)
...态的实现3.小结 1.多态的含义 多态,是Java面向对象的三大特性之一,使用之地特别广泛。那么什么是多态呢?多态是同一个行为具有多个不同表现形式或形态的能力。比如炒菜这个行为在不同厨师身上会产... 查看详情
java面向对象之多态(代码片段)
...态的实现3.小结 1.多态的含义 多态,是Java面向对象的三大特性之一,使用之地特别广泛。那么什么是多态呢?多态是同一个行为具有多个不同表现形式或形态的能力。比如炒菜这个行为在不同厨师身上会产... 查看详情
面向对象的三大特性之多态(代码片段)
#面向对象的三大特性之多态#多态由不同的类实例化得到的对象,调用同一个方法,执行的逻辑不同#多态的概念指出了对象如何通过他们的属性和动作来操作及访问,而不需要考虑他们具体的类#多态表明了动态(运行时)绑定... 查看详情
java基础面向对象三个特征:多态(代码片段)
一、多态的概述 多态:一个对象拥有多种形态 eg:小明是一个学生(学生形态),同时也是一个人(人类形态) 多态的格式与使用:父类引用指向子类对象 格式:父类名称对象名=new子类名称() ... 查看详情
前端javascript设计模式前奏--面向对象-封装继承多态(代码片段)
JavaScript面向对象如图所示:1.什么是面向对象1.面向对象的概念2.面向对象的三要素:继承/封装/多态⭐️3.JS的应用举例4.面相对象的意义---数据结构化2.面向对象的概念:类+对象1.面向对象的概念:类+对象1.类(模板)/对象(实例)1.... 查看详情
python面向对象之多态(代码片段)
多态第一阶段:判断一个变量是否是某个类型可以用isinstance()判断classAnimal(object):defrun(self):print("Animalisrunning")classDog(Animal):defrun(self):print("Dogisrunning")classCat(Animal):defrun(self):print 查看详情
面向对象三大特性之多态与多态性(代码片段)
一、多态‘‘‘多态:同一事物的多种形态‘‘‘#文件的多种形态:classFile:defclick(self):passclassTextFile(File):defread(self):print(‘文本文件双击可以查看内容‘)classExeFile(File):defexe(self):print(‘可执行文件双击可以执行‘)file1=TextFile()file2... 查看详情
java中面向对象三大特性之——多态(代码片段)
多态的概述: 多态是继封装、继承之后,面向对象的第三大特性。生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也是不一样的。可见,同一行为,通过不同的... 查看详情
面向对象三大特性(代码片段)
面向对象三大特性1.面向对象的三大特性:继承,封装,多态封装:将一堆代码或者数据等放到一个空间中,并且可以使用多态:同一个对象,多种形态.(python默认支持多态)封装:根据职责将属性和方法封装到一个抽象的类中继承:实现代码... 查看详情
java面试题详解一:面向对象三大特性(代码片段)
一,多态:1.面向对象四大基本特性:抽象,封装,继承,多态抽象,封装,继承是多态的基础。多态是抽象,封装,继承的表现。2.什么是多态不同类的对象对同一消息作出不同的响应叫做多态3.多态的作用简单来说:解藕。详... 查看详情