博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
No2_3.接口继承多态_Java学习笔记_多态
阅读量:4597 次
发布时间:2019-06-09

本文共 4429 字,大约阅读时间需要 14 分钟。

***多态***
1.多态性:通常使用方法的重载(Overloading)和重写(Overriding)实现类的多态;
2.重写之所以具有多态性,是因为父类的方法在子类中被重写,方法名相同,实现功能不同。
3.方法重载:是指在一个类中出现多个方法名相同,但参数或参数类型不同的方法;
4.java执行重载方法时,根据参数个数和类型区执行哪一个方法;
5.重载的方法之前不一定必须有联系,但为了提高程序的可读性,一般只重载功能相似的方法;
6.方法重载时,方法返回值类型不能作为区分方法的标志;

多态:

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 stub101         System.out.println("开始学习多态喽~~");102         103         //多态:方法重载 ,同一个类多个同名方法104         System.out.println("\n方法重载 ,同一个类多个同名方法:");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("\n计算几何图形的面积:");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("\n简单的汽车销售商场");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 图形的面积是:Circle11 图形的面积是:Rectangle12 13 简单的汽车销售商场14 顾客要购买BMW:15 提取汽车:It's a BMW!16 顾客要购买Benz:17 提取汽车:It's a Benz!

 

转载于:https://www.cnblogs.com/sunshine-habit/p/5642081.html

你可能感兴趣的文章
Custom view * is not using the 2- or 3-argument View constructors; XML attributes will not work
查看>>
模型选择准则
查看>>
安卓动态增加按钮
查看>>
iOS7程序后台运行
查看>>
maven+testng+reportng的pom设置
查看>>
IT telephone interview
查看>>
gitlab安装配置
查看>>
ps载入画笔
查看>>
悲怆:IT人的一声叹息->一个程序员的自白[转帖]
查看>>
[SpringMVC]自定义注解实现控制器访问次数限制
查看>>
日记(序)
查看>>
A == B ?
查看>>
洛谷P3763 [Tjoi2017]DNA 【后缀数组】
查看>>
GSM模块_STM32实现GPRS与服务器数据传输经验总结
查看>>
5.Python进阶_循环设计
查看>>
【NLP】揭秘马尔可夫模型神秘面纱系列文章(一)
查看>>
Android采访开发——2.通用Android基础笔试题
查看>>
UVa 442 Matrix Chain Multiplication(矩阵链,模拟栈)
查看>>
多种方法求解八数码问题
查看>>
spring mvc ModelAndView向前台传值
查看>>