第六章面向对象 第三篇

-什么是多态

-1.即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

-2.指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)

-多态存在的三个必要条件

一、要有继承;

二、要有重写;

三、父类引用指向子类对象。

-经典案例

-形状类(父类)

**

  • 父类Shape,抽象类
    */
    public abstract class Shape {
    //声明两个受保护类型的属性x,y
    protected double x;
    protected double y;
    //无参构造器
    public Shape(){
    }
    //全参构造器,只做声明,具体属性初始化到子类中
    public Shape(double x,double y){
    }
    //声明一个抽象方法,抽象方法不能带方法体
    public abstract double getArea();
    }

-三角形类(子类)

/**

  • 三角形子类,继承Shape,实现方式同Rectangle
    */

public class Triangle extends Shape{
public Triangle(){
super();
}

public Triangle(double x, double y){
    super.x=x;
    super.y=y;

}
@Override
public double getArea(){
    return this.x*this.y*0.5;

}

}

-矩形类(子类)

/**

  • 矩形子类,继承Shape,java是单一继承,只能有一个父类
    */
    public class Rectangle extends Shape {
    public Rectangle(){
    super();
    }
    public Rectangle(double x,double y){
    //在构造方法中给父类属性x和y初始化,通过super.x和super.y访问父类属性
    super.x=x;
    super.y=y;

    }
    //重写父类中的抽象方法getArea(),求出具体形状的面积
    @Override
    public double getArea(){
    //this.x和this.y是访问当前对象的x和y属性, 此处用super.xsuper.y
    return this.x
    this.y;
    }
    }

-立方体子类

/**

  • 立方体子类,继承Rectangle类,为最终类,不再被继承
    */

public class Cube extends Rectangle {
//声明一个私有属性,为立方体的高
private double height;
public Cube(){
}
public Cube(double x,double y,double height){
//调用父类构造方法,完成对底面矩形的长,宽的初始化
super(x,y);
//通过this关键字,完成当前立方体对象的高的初始化
this.height=height;
}
//本类独有的成员方法,求体积
public double getVolum(){
//调用父类的求面积方法,求出底面矩形面积,使用this.height访问当前立方体的高,最终求出立方体的体积
return super.getArea()*this.height;
}

}

-测试类

/**

  • 主程序,用来测试各种子类及方法
    */

public class Test {
public static void main(String[] args) {
//通过上转型对象创建一个三角形的对象
Shape shape = new Triangle(4.0,3.0);
System.out.println("三角形面积是:"+shape.getArea());
//t通过上转型对象创建一个矩形的对象
Shape shape1 = new Rectangle(4.0,3.0);
System.out.println("矩形面积是:"+shape1.getArea());
//通过最终类创建一个立方体对象
Cube cube = new Cube(4.0,3.0,2.0);
System.out.println("立方体体积是:"+cube.getVolum());
}
}

-运行结果图

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容

  • 听哥说心里话阅读 380评论 0 1
  • 开始学习水彩已有两个月,在水平提高的同时,体验到绘画带给自己心灵的平静之感。前两天一次不远的旅行,第一次敢于拿起画...
    张璇fxz阅读 261评论 0 6
  • 现在孩子都三岁半了,原来都不尿床,现在天天尿床,弄得我很心烦,还有我发现孩子的毛病越来越多,跟老公也不断在吵架,真...
    我心我愿秀阅读 87评论 0 3
  • 中午没做饭只是煮了几个菜。对面是饭店,去买两块钱饭就可以了。我拿着自家的碗,去那店里买饭。 老板娘正在为一个来...
    狂小烹阅读 2,447评论 36 37