关键词:
多态:
1 /** 2 * 3 * @author 作者:sunshine 4 * @date 创建时间:2016年7月4日 下午5:22:19 5 */ 6 7 class Calculate{ 8 final float PI=3.14f; 9 //求圆形的面积 10 public float getArea(float r){ 11 float area=PI*r*r; 12 return area; 13 } 14 //求矩形的面积 15 public float getArea(float w,float l){ 16 float area=w*l; 17 return area; 18 } 19 //画任意形状的图形 20 public void draw(int n){ 21 System.out.println("画"+n+"个任意形状的图形。"); 22 } 23 public void draw(String shape){ 24 System.out.println("画一个"+shape+"形状的图形。"); 25 } 26 } 27 28 /********** 29 *1、抽象类声明时要使用abstract关键字来定义,为继承而存在;抽象类不能创建对象; 30 *2、抽象类里的抽象方法不能有方法体, 只能是方法的声明,例如 abstract void AMethod()。 31 *3、如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。 32 *4、如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类。 33 */ 34 abstract class Shape{ 35 public String getName(){ 36 return this.getClass().getSimpleName(); //不懂这儿,书上解释:使用反射机制获得"类"名称 37 } 38 public abstract double getArea(); //获得图形的名称 39 } 40 41 class Circle extends Shape{ 42 private double radius; 43 public Circle(double radius){ 44 this.radius=radius; 45 } 46 47 @Override 48 public double getArea(){ 49 return Math.PI*Math.pow(radius, 2); 50 } 51 } 52 class Rectangle extends Shape{ 53 private double length; 54 private double width; 55 public Rectangle(double length,double width){ 56 this.length=length; 57 this.width=width; 58 } 59 60 @Override 61 public double getArea(){ 62 return length*width; 63 } 64 } 65 66 //简单的汽车销售商场 67 abstract class Car{ 68 public abstract String getInfo(); 69 } 70 class BMW extends Car{ 71 @Override 72 public String getInfo(){ 73 return "It‘s a BMW!"; 74 } 75 } 76 class Benz extends Car{ 77 @Override 78 public String getInfo(){ 79 return "It‘s a Benz!"; 80 } 81 } 82 //创建一个CarFactory类,定义一个静态方法getCar(),可以根据用户指定的车型来创建类 83 class CarFactory { 84 public static Car getCar(String name){ 85 if (name.equalsIgnoreCase("BMW")){ 86 return new BMW(); 87 } else if (name.equalsIgnoreCase("Benz")){ 88 return new Benz(); 89 }else { 90 return null; 91 } 92 } 93 } 94 95 96 97 public class Hello3Polymorphism { 98 99 public static void main(String[] args) { 100 // TODO Auto-generated method stub 101 System.out.println("开始学习多态喽~~"); 102 103 //多态:方法重载 ,同一个类多个同名方法 104 System.out.println(" 方法重载 ,同一个类多个同名方法:"); 105 Calculate cal=new Calculate(); 106 float r=5.20f; 107 float w=8,l=4; 108 float areaR=cal.getArea(w, l); //精度不够准哟 109 float areaC=cal.getArea(r); 110 System.out.println("半径为"+r+"的圆的面积是:"+areaC); 111 System.out.println("长为"+l+"宽为"+w+"的长方形的面积是"+areaR); 112 113 int n=5; 114 String star="星星"; 115 cal.draw(n); 116 cal.draw(star); 117 118 //计算几何图形的面积 119 System.out.println(" 计算几何图形的面积:"); 120 Circle circle=new Circle(1); 121 //System.out.println("图形的名称是:"+circle.getArea()); 122 System.out.println("图形的面积是:"+circle.getName()); 123 Rectangle rectangle=new Rectangle(3,5); 124 //System.out.println("图形的名称是:"+rectangle.getArea()); 125 System.out.println("图形的面积是:"+rectangle.getName()); 126 127 128 //简单的汽车销售商场 129 System.out.println(" 简单的汽车销售商场"); 130 System.out.println("顾客要购买BMW:"); 131 Car bwm=CarFactory.getCar("BMW"); 132 System.out.println("提取汽车:"+bwm.getInfo()); 133 System.out.println("顾客要购买Benz:"); 134 Car benz=CarFactory.getCar("Benz"); 135 System.out.println("提取汽车:"+benz.getInfo()); 136 137 138 139 } 140 141 }
输出结果:
1 开始学习多态喽~~ 2 3 方法重载 ,同一个类多个同名方法: 4 半径为5.2的圆的面积是:84.905594 5 长为4.0宽为8.0的长方形的面积是32.0 6 画5个任意形状的图形。 7 画一个星星形状的图形。 8 9 计算几何图形的面积: 10 图形的面积是:Circle 11 图形的面积是:Rectangle 12 13 简单的汽车销售商场 14 顾客要购买BMW: 15 提取汽车:It‘s a BMW! 16 顾客要购买Benz: 17 提取汽车:It‘s a Benz!
no2_2.接口继承多态_java学习笔记_继承
***类的继承***1.继承的实现extends2.[修饰符]class子类名extends父类名{}3.修饰符一般为:publicabstractfinal4.重写是指父子类之间的关系,子类的方法名与父类的方法名相,那么子类就不能继承父类的方法,称子类的方法重写了父类的方... 查看详情
java零基础小白学习教程之day08_接口&多态(代码片段)
day08-JAVAOOP课程目标1.【理解】什么是接口2.【掌握】接口的定义格式3.【掌握】接口的使用4.【理解】接口的成员特点5.【理解】类和接口抽象类和接口之间的关系6.【掌握】单继承多实现7.【理解】接口之间的多继承8.【掌握】接... 查看详情
java零基础小白学习教程之day08_接口&多态(代码片段)
day08-JAVAOOP课程目标1.【理解】什么是接口2.【掌握】接口的定义格式3.【掌握】接口的使用4.【理解】接口的成员特点5.【理解】类和接口抽象类和接口之间的关系6.【掌握】单继承多实现7.【理解】接口之间的多继承8.【掌握】接... 查看详情
java_封装,继承和多态笔记(代码片段)
文章目录Java_面向对象—封装与隐藏Java_封装和继承的操作Java_四种访问权限修饰符Java_构造器(构造方法)Java_构造器的重载Java_属性赋值过程Java_JavaBeanJava_this简介Java_this使用情况Java_this注意事项Java_面向对象编程-继承性J... 查看详情
我的学习之路_第二章_接口/多态
接口 (1)当抽象类中的方法都是抽象的时候,java就提供了一种新的表现形式:接口。接口是功能的集合接口不能创建对象 (2)格式: 父接口: publicinterfaceInter { } 子类: publicclassInterImplimplementsInter { } (3)接口的特点... 查看详情
java_多态
...的前提 1.要有继承、实现的关系 2.要有方法重写 3.父类/接口接收子类对象 Animala=newDog();//Animal是Dog的父类 Usbu=newMouse();//Usb是Mouse的接口 多态的成员访问特点1.成员变量的访问特点 编译看左边(父类),运行也看... 查看详情
java学习笔记3.7.3抽象类接口与多态-多态
...四、课后作业任务1、公共汽车类与载重卡车类实现汽车接口任务2、驾驶员类、测试驾驶员类 查看详情
2016年4月3日_java学习笔记
...后骨折的地方会痛。2、有一个用来判断是否应该设计为继承关系的简单原则,这就是“is-a”原则,它表明每一个子类都是超类的一种。3、关于动态绑定(也就是存在多态情况时的方法调用问题)首先,在编译时,都会检... 查看详情
2019-05-17java学习日记之面向对象_多态&抽象类&接口(代码片段)
多态 多态的概述:A:多态(polymorphic)事物存在的多种形态B:多态前提a:要有继承关系b:要有方法重写c:要有父类引用指向子类对象多态中的成员访问特点之成员变量:成员变量:编译看左边(父类),运行看左边(父... 查看详情
c++__多态(代码片段)
...final2.6重载、覆盖(重写)、隐藏(重定义)的对比3.抽象类3.1接口继承和实现继承4.多态的原理4.1虚函数表4.2动态绑定与静态绑定1.多态的概念多态的概念:当不同的对象去完成某个事件时会产生出不同的状态。举 查看详情
no_16_0229java基础学习第九天
...类概述抽象类特点抽象类的成员特点抽象类的几个小问题接口接口概述接口特点接口成员特点类与类,类与接口以及接口与接口的关系抽象类和接口的区别final关键字final关键字是最终的意思,可以修饰类,成员变量,成员方法。 查看详情
javaoop第05章_多态接口
一、为什么需要接口? Java中当一个类继承父类时,最多也只能继承一个父类,扩展性会受到一定的限制,为了弥补这一缺陷,Java又提供了一种新的引用数据类型分类,叫接口。一个类只能继承一个父类,但可以实现多个接... 查看详情
python学习之旅--封装继承多态(代码片段)
...#34;,18)#print(ani.name,ani.get_age())#print(ani.__show_info())print(ani)2,继承目的:知道继承的作用,和编写格式操作流程#1,员工类classEmployee(object):#1,通用属性def__i 查看详情
java学习笔记3.7.2抽象类接口与多态-接口
文章目录零、本讲学习目标一、老版本接口定义二、JDK8接口定义(一)接口定义语法格式(二)接口语法定义说明三、接口案例演示(一)接口的定义与实现1、创建形状接口2、创建圆类,实现形状接口3、创建测试类4、课堂练... 查看详情
java_多态(代码片段)
...ava_虚拟方法调用(VirtualMethodInvocation)Java_多态总结Java_子类继承父类Java_instanceof操作符Java_对象类型转换(Casting)Java_Object类Java_==和equals方法Java_重写equals()方法的原则Jav 查看详情
java学习笔记3(datawhale教程)(代码片段)
...ava学习笔记3(datawhale教程):类与方法,继承与多态,抽象类与接口文章目录java学习笔记3(datawhale教程):类与方法,继承与多态,抽象类与接口一.类与方法1.类与对象2.成员变量3.成员方法语法格式来看例子成员方法的参数值参数引用参数... 查看详情
11_java面向对象_第11天(接口多态)_讲义
今日内容介绍1、接口2、多态01接口的概念*A:接口的概念接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口... 查看详情
11_java面向对象_第11天(接口多态)
今日内容介绍1、接口2、多态01接口的概念*A:接口的概念接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当... 查看详情