多态中的向上转型和向下转型

package ren.redface.demo;

/*
 *     多态中的向上转型和向下转型:
 *
 *  引用类型之间的转换
 *      向上转型
 *          由小到大(子类型转换成父类型)
 *      向下转型
 *          由大到小
 *  基本数据类型的转换
 *      自动类型转换
 *          由小到大
 *          byte short char --- int --- long --- float --- double
 *      强制类型转换
 *          由大到小
 */
public class MethoDemo {
    public static void main(String[] args) {
        Animal2 a = new Dog();//向上转型
        //a.eat();

        Dog d = (Dog)a;//向下转型
        d.swim();
        d.eat();

    }
}

class Animal2 {
    public void eat() {
        System.out.println("吃东西");
    }
}

class Dog extends Animal2 {
    public void eat() {
        System.out.println("啃骨头");
    }

    public void swim() {
        System.out.println("狗刨");
    }
}

打印结果:

狗刨
啃骨头
实例二:
package ren.redface.demo;

/*

* 多态的优缺点

* 优点:可以提高可维护性(多态前提所保证的),提高代码的可扩展性

缺点:无法直接访问子类特有的成员

*/

public class MethoDemo {
    public static void main(String[] args) {
        MiFactory factory = new MiFactory();
        factory.createPhone(new MiNote());

        factory.createPhone(new RedMi());
    }
}

class MiFactory {

    public void createPhone(Phone p) {
        p.call();
    }
}

interface Phone {
    public void call();
}

//小米Note
class MiNote implements Phone{
    public void call() {
        System.out.println("小米Note打电话");
    }
}

//红米
class RedMi implements Phone {
    public void call() {
        System.out.println("红米打电话");
    }
}

打印结果:

小米Note打电话
红米打电话

原文地址:https://www.cnblogs.com/ooo888ooo/p/12694332.html

时间: 2024-08-02 23:27:07

多态中的向上转型和向下转型的相关文章

重新认识java(五) ---- 面向对象之多态(向上转型与向下转型)

多态,大概每个人都知道.但是,又有几个人真的理解什么是多态.多态有哪些细节呢?如果你看到这篇文章的名字,脑海中对多态没有一个清晰的概念,不妨点进来看看,也许会有收获. 什么是多态 简单的理解多态 多态,简而言之就是同一个行为具有多个不同表现形式或形态的能力.比如说,有一杯水,我不知道它是温的.冰的还是烫的,但是我一摸我就知道了.我摸水杯这个动作,对于不同温度的水,就会得到不同的结果.这就是多态. 那么,java中是怎么体现多态呢?我们来直接看代码: public class Water { pu

多态、向上转型和向下转型

一.多态性: 是对对象来说的.extends或implements是多态性的前提. 经理类继承雇员类.小明是一个经理对象,这个对象既有经理形态,也有雇员形态.一个对象有多种形态,这就是对象的多态性. 多态性格式:父类引用指向子类对象 格式:父类名称 对象名 = new 子类名称(); 或:接口名称 对象名 = new 实现类名称(); 可以这样理解:子类被当做父类来看待(一个经理被当做雇员来看待,一直猫被当做动物来看待).而对象只能引用父类特有的方法. 二.多态访问成员变量的两种方式: 1.直接

【转】面向对象之多态(向上转型与向下转型)

转:https://blog.csdn.net/qq_31655965/article/details/54746235. 多态,大概每个人都知道.但是,又有几个人真的理解什么是多态.多态有哪些细节呢?如果你看到这篇文章的名字,脑海中对多态没有一个清晰的概念,不妨点进来看看,也许会有收获. 什么是多态 简单的理解多态 多态,简而言之就是同一个行为具有多个不同表现形式或形态的能力.比如说,有一杯水,我不知道它是温的.冰的还是烫的,但是我一摸我就知道了.我摸水杯这个动作,对于不同温度的水,就会得到不

[转帖]多态、向上转型和向下转型

多态.向上转型和向下转型 https://segmentfault.com/a/1190000019700754 向下转型向上转型多态 java 阅读约 4 分钟 多态性: 是对对象来说的.extends或implements是多态性的前提. 经理类继承雇员类.小明是一个经理对象,这个对象既有经理形态,也有雇员形态.一个对象有多种形态,这就是对象的多态性. 多态性格式:父类引用指向子类对象 格式:父类名称 对象名 = new 子类名称(); 或:接口名称 对象名 = new 实现类名称(); 可

java中的向上转型与向下转型

以前学Javase时就专门注意过这个问题,现在到了现在又犯了这个错误,这个错误让我排查了好久 1 : 向上转型:大体可以理解为子类转换成父类,例子优先还是: 1 public class Animal { 2 public void eat(){ 3 System.out.println("animal eatting..."); 4 } 5 } 7 public class Cat extends Animal{ 9 public void eat(){ 11 System.out.

Java入门记(二):向上转型与向下转型

在对Java学习的过程中,对于转型这种操作比较迷茫,特总结出了此文.例子参考了<Java编程思想>. 目录 几个同义词 向上转型与向下转型 例一:向上转型,调用指定的父类方法 例二:向上转型,动态绑定 例三:向上转型,静态绑定 例四:向下转型 转型的误区 1.运行信息(RTTI) 2.数组类型 3.Java容器 几个同义词 首先是几组同义词,由于在不同的书上使用的不同,是造成混淆的原因之一. 父类/超类/基类 子类/导出类/继承类/派生类 静态绑定/前期绑定 动态绑定/后期绑定/运行时绑定 向

[转]向上转型与向下转型

原文地址:http://www.cnblogs.com/wuyuegb2312/p/3858521.html 在对Java学习的过程中,对于转型这种操作比较迷茫,特总结出了此文.例子参考了<Java编程思想>. 目录 几个同义词 向上转型与向下转型 例一:向上转型,调用指定的父类方法 例二:向上转型,动态绑定 例三:向上转型,静态绑定 例四:向下转型 转型的误区 1.运行信息(RTTI) 2.数组类型 3.Java容器 几个同义词 首先是几组同义词.它们出现在不同的书籍上,这是造成理解混淆的原

Java转型(向上转型和向下转型)

在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 5.13.1 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们更倾向于使用抽象概念"人".再例如,麻雀是鸟类的一种(鸟类的子类),而鸟类则是动物中的一种(动物的子类).我们现实中也经常这样说:麻雀是鸟.这两种说法实际上就是所谓的向上转型,通俗地说就是子类转型成父类.这也符合Java提倡的面向抽象编程思想.来看下面的代码: package a.

java 向上转型和向下转型

学习向上转型和向下转型怎么用没多难,但是为什么那样用,我搞了很多次没弄明白.没弄明白的原因是平时学习时之看例子,而例子一般都比较简单,没有对象之间的调用,一般就是一个对象调用自己的方法. 首先看下怎么用转型. 要转型,首先要有继承.继承是面向对象语言中一个代码复用的机制,简单说就是子类继承了父类中的非私有属性和可以继承的方法,然后子类可以继续扩展自己的属性及方法. 向上转型:子类对象转为父类,父类可以是接口.公式:Father f = new Son();Father是父类或接口,son是子类.