No2_3.接口继承多态_Java学习笔记_多态
***多态***
1.多态性:通常使用方法的重载(Overloading)和重写(Overriding)实现类的多态;
2.重写之所以具有多态性,是因为父类的方法在子类中被重写,方法名相同,实现功能不同。
3.方法重载:是指在一个类中出现多个方法名相同,但参数或参数类型不同的方法;
4.java执行重载方法时,根据参数个数和类型区执行哪一个方法;
5.重载的方法之前不一定必须有联系,但为了提高程序的可读性,一般只重载功能相似的方法;
6.方法重载时,方法返回值类型不能作为区分方法的标志;
多态:
/**
*
* @author 作者:sunshine
* @date 创建时间:2016年7月4日 下午5:22:19
*/ class Calculate{
final float PI=3.14f;
//求圆形的面积
public float getArea(float r){
float area=PI*r*r;
return area;
}
//求矩形的面积
public float getArea(float w,float l){
float area=w*l;
return area;
}
//画任意形状的图形
public void draw(int n){
System.out.println("画"+n+"个任意形状的图形。");
}
public void draw(String shape){
System.out.println("画一个"+shape+"形状的图形。");
}
} /**********
*1、抽象类声明时要使用abstract关键字来定义,为继承而存在;抽象类不能创建对象;
*2、抽象类里的抽象方法不能有方法体, 只能是方法的声明,例如 abstract void AMethod()。
*3、如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。
*4、如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类。
*/
abstract class Shape{
public String getName(){
return this.getClass().getSimpleName(); //不懂这儿,书上解释:使用反射机制获得"类"名称
}
public abstract double getArea(); //获得图形的名称
} class Circle extends Shape{
private double radius;
public Circle(double radius){
this.radius=radius;
} @Override
public double getArea(){
return Math.PI*Math.pow(radius, 2);
}
}
class Rectangle extends Shape{
private double length;
private double width;
public Rectangle(double length,double width){
this.length=length;
this.width=width;
} @Override
public double getArea(){
return length*width;
}
} //简单的汽车销售商场
abstract class Car{
public abstract String getInfo();
}
class BMW extends Car{
@Override
public String getInfo(){
return "It's a BMW!";
}
}
class Benz extends Car{
@Override
public String getInfo(){
return "It's a Benz!";
}
}
//创建一个CarFactory类,定义一个静态方法getCar(),可以根据用户指定的车型来创建类
class CarFactory {
public static Car getCar(String name){
if (name.equalsIgnoreCase("BMW")){
return new BMW();
} else if (name.equalsIgnoreCase("Benz")){
return new Benz();
}else {
return null;
}
}
} public class Hello3Polymorphism { public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("开始学习多态喽~~"); //多态:方法重载 ,同一个类多个同名方法
System.out.println("\n方法重载 ,同一个类多个同名方法:");
Calculate cal=new Calculate();
float r=5.20f;
float w=8,l=4;
float areaR=cal.getArea(w, l); //精度不够准哟
float areaC=cal.getArea(r);
System.out.println("半径为"+r+"的圆的面积是:"+areaC);
System.out.println("长为"+l+"宽为"+w+"的长方形的面积是"+areaR); int n=5;
String star="星星";
cal.draw(n);
cal.draw(star); //计算几何图形的面积
System.out.println("\n计算几何图形的面积:");
Circle circle=new Circle(1);
//System.out.println("图形的名称是:"+circle.getArea());
System.out.println("图形的面积是:"+circle.getName());
Rectangle rectangle=new Rectangle(3,5);
//System.out.println("图形的名称是:"+rectangle.getArea());
System.out.println("图形的面积是:"+rectangle.getName()); //简单的汽车销售商场
System.out.println("\n简单的汽车销售商场");
System.out.println("顾客要购买BMW:");
Car bwm=CarFactory.getCar("BMW");
System.out.println("提取汽车:"+bwm.getInfo());
System.out.println("顾客要购买Benz:");
Car benz=CarFactory.getCar("Benz");
System.out.println("提取汽车:"+benz.getInfo()); } }
输出结果:
开始学习多态喽~~ 方法重载 ,同一个类多个同名方法:
半径为5.2的圆的面积是:84.905594
长为4.0宽为8.0的长方形的面积是32.0
画5个任意形状的图形。
画一个星星形状的图形。 计算几何图形的面积:
图形的面积是:Circle
图形的面积是:Rectangle 简单的汽车销售商场
顾客要购买BMW:
提取汽车:It's a BMW!
顾客要购买Benz:
提取汽车:It's a Benz!
No2_3.接口继承多态_Java学习笔记_多态的更多相关文章
- No2_4.接口继承多态_Java学习笔记_经典案例
import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; import jav ...
- No2_1.接口继承多态_Java学习笔记_接口
接口.继承与多态 1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余: 2.继承:复用定义好的类: 3.多态:可以动态调整对象的调用,降低对象 ...
- No2_2.接口继承多态_Java学习笔记_继承
***类的继承***1.继承的实现extends2.[修饰符] class 子类名 extends 父类名{}3.修饰符一般为:public abstract final4.重写是指父子类之间的关系, ...
- No2_5.类的高级特性_Java学习笔记_抽象类和成员内部类
一.抽象类1.所谓抽象类,只声明方法的存在而不去实现它的类:2.抽象类不能被实例化,即不能实现其对象:3.abstract class 类名{ 类体 }4.包含一个或多个抽象方法的类必须声明成抽象类: ...
- 《Java编程思想》学习笔记_多态
多态 多态指一个行为产生多种状态,针对父类类型可接收其子类类型,最终执行的状态由具体子类确定,其不同子类可呈现出不同状态.例如人[父类]都会跑步[行为],但小孩[子类]跑步.成年人[子类]跑步.运动员 ...
- java学习笔记_多态
多态:父类的变量可以引用子类的对象 引用: Student s1 = stu; s1.setScore(200); 1.一个对象可以有多个引用,可以有多个变量操作同一个对象 2.当一个对象没有任何 ...
- SQL反模式学习笔记7 多态关联
目标:引用多个父表 反模式:使用多用途外键.这种设计也叫做多态关联,或者杂乱关联. 多态关联和EAV有着相似的特征:元数据对象的名字是存储在字符串中的. 在多态关联中,父表的名字是存储在Issue_T ...
- jQuery源代码学习笔记_工具函数_noop/error/now/trim
jQuery源代码学习笔记_工具函数_noop/error/now/trim jquery提供了一系列的工具函数,用于支持其运行,今天主要分析noop/error/now/trim这4个函数: 1.n ...
- SSM框架学习笔记_第1章_SpringIOC概述
第1章 SpringIOC概述 Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架. 1.1 控制反转IOC IOC(inversion of controller)是一种概念 ...
随机推荐
- Asp.Net页面生命周期--转发(学海无涯)
一.什么是Asp.Net页面生命周期 当我们在浏览器地址栏中输入网址,回车查看页面时,这时会向服务器端(IIS)发送一个request请求,服务器就会判断发送过来的请求页面, 完全识别 HTTP 页 ...
- HTML&CSS基础学习笔记1.27-input提交数据
提交数据 我们在表单上填的信息很多情况下需要提交到后台. <input>的[type]属性值为“submit”时,表示提交表单数据.它在页面的表现形式也是个按钮,点击该按钮,表单数据将会提 ...
- 这样就算会了PHP么?-1
公司有用到这些业务,多了解一下总是没错的. 现在开始一系列的PHP学习啦... <?php $boo=true; if($boo==true) echo '变量$boo为真!'; else ec ...
- XJOI网上同步训练DAY6 T2
思路:记得FJ省队集训好像有过这题,可是我太弱了,根本不懂T_T #include<cstdio> #include<iostream> #include<cmath&g ...
- Android开发多线程断点续传下载器
使用多线程断点续传下载器在下载的时候多个线程并发可以占用服务器端更多资源,从而加快下载速度,在下载过程中记录每个线程已拷贝数据的数量,如果下载中断,比如无信号断线.电量不足等情况下,这就需要使用到断点 ...
- SQL Server 通过一个表和另一个表联合 批量更新这个表的字段
UPDATE OutPzPersonSet SET cPerson = a.AAA --SELECT * FROM OutPzPersonSet d INNER JOIN AAAA a ON d.cz ...
- hdu3415:最大k子段和,单调队列
题目大意:给定长度为n的数组,求出最大的区间和,其中区间长度在[1,k]之间 分析: 学动态规划的时候我们会遇到一个经典问题 最大子段和,这个题跟最大子段和很类似 不同的是区间的长度有限制,无法用原算 ...
- [HEOI 2013 day2] SAO (树形动态规划)
题目大意 给一棵N个节点的有向树(N <= 1000),求其拓扑序列个数. 思路 我们将任意一个点作为根,用dp[i][j]表示以节点i为根的子树满足节点i在第j个位置上的拓扑序列的个数.在求节 ...
- Android 之窗口小部件详解(三) 部分转载
原文地址:http://blog.csdn.net/iefreer/article/details/4626274. (一) 应用程序窗口小部件App Widgets 应用程序窗口小部件(Widget ...
- myeclipse实现Servlet实例(2) 继承GenericServet类实现,需要重写service方法
1.在myeclipse新建web project,配置Tomcat(在myeclipse的Window--preferences) 2.然后在src新建servlet文件( 此处放在com.tsin ...