java上转型和下转型(对象的多态性)

/*上转型和下转型(对象的多态性)
*上转型:是子类对象由父类引用,格式:parent p=new son
*也就是说,想要上转型的前提必须是有继承关系的两个类。
*在调用方法的时候,上转型对象只能调用父类中有的方法,如果调用子类的方法则会报错
*下转型:是父类向下强制转换到子类对象
*前提是该父类对象必须是经过上转型的对象。
*
*代码示例:*/

 1 abstract class Parent{
 2     abstract void grow();
 3 }
 4 class Son extends Parent{
 5     void grow(){
 6         System.out.println("我比父亲成长条件好");
 7     }
 8     void dance(){
 9         System.out.println("我会踢球");
10     }
11 }
12 public class test {
13     public static void main(String[] args) {
14         //上转型,用父类的引用子类的对象
15         Parent p=new Son();
16         //调用父类中有的方法
17         p.grow();
18         //p.dance();这里会报错,因为父类中没有dance()方法
19
20         //对进行过上转型的对象,进行强制下转型
21         Son s=(Son)p;
22         //调用子类中的方法
23         s.dance();
24     }
25 }

/*
* 在我们写程序中,很少会把代码写死,比如说还会有daughter类
* 然后在封装函数来调用对象,说不定会用到子类的方法,这里我们来讲解一下这一方面的知识*/

 1 abstract class Parent{
 2     abstract void grow();
 3 }
 4 class Son extends Parent{
 5     void grow(){
 6         System.out.println("我比父亲成长条件好一点:son");
 7     }
 8     void play(){
 9         System.out.println("我会踢球");
10     }
11 }
12 class Daughter extends Parent{
13     void grow(){
14         System.out.println("我比父亲成长条件好很多:daughter");
15     }
16     void dance(){
17         System.out.println("我会跳舞");
18     }
19 }
20 public class test {
21     public static void main(String[] args) {
22         Parent p=new Son();
23         show(p);
24         Parent p2=new Daughter();
25         show(p2);
26     }
27     public static void show(Parent p){
28             //现将父类中有的方法输出
29             p.grow();
30             //对进行过上转型的对象进行类型判断,然后进行相应的强制下转型
31             if(p instanceof Son){
32                 //判断是哪个类的上转型对象,然后进行下转型
33                 Son s=(Son)p;
34                 //调用子类中的方法
35                 s.play();
36             }else if(p instanceof Daughter){
37                 Daughter d=(Daughter)p;
38                 d.dance();
39             }
40
41     }
42 }
时间: 2024-11-07 16:18:05

java上转型和下转型(对象的多态性)的相关文章

Java多态之向下转型

目录 Java多态之向下转型 强制类型转换 instanceof Java多态之向下转型 往期回顾:我们学习了向上转型和动态绑定的概念,可以知道在继承关系中,将一个子类对象赋值给父类的引用变量,调用父类的方法,在实际运行时,就可以根据子类中重写的方法执行不同的操作.其中有一个弊端,就是在向上转型的过程中,其实丢失了一部分子类特有的功能,毕竟它只允许调用父类中的方法.那么,如何在这时调用子类中的方法呢,这时就需要与向上转型相对应的方法,就是所谓的:向下转型. 向上转型是自动就能完成的,向下转型则需

Java基础第9天+final关键字、多态(上转型,下转型)、抽象类(特点,成员特点)、接口(特点,成员特点)

1:final关键字(掌握) (1)是最终的意思,可以修饰类,方法,变量. (2)特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量. (3)面试相关: A:局部变量 a:基本类型 值不能发生改变 b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的 B:初始化时机 a:只能初始化一次. b:常见的给值 定义的时候.(推荐) 构造方法中. 2:多态(掌握) (1)同一个对象在不同时刻体现出来的不同状态. (2)多态的前提: A:有继承或者实

Java上转型和下转型

Java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象. 什么叫父类引用指向子类对象,且听我慢慢道来. 从2个名词开始说起:向上转型(upcasting) .向下转型(downcasting). 举个例子:有2个类,Father是父类,Son类继承自Father. Father f1 = new Son();   // 这就叫 upcasting (向上转型) // 现在f1引用指向一个Son对象 Son s1 = (Son)f1;   // 这就叫 downcasting (向下

对象的上转型和下转型 (instanceof关键字)

1.对象的上转型,就是多态的一种写法 格式:父类名称 对象名 = new 子类名称(): Animal animal = new Cat(); 含义:右侧创建一个子类对象,把它当作父类来使用 向上转型一定是安全的,从小范围到大范围: 猫是动物,动物不一定是猫 类似于:double num = 100 ps:对象一旦向上转型为父类,就无法调用子类特定内容 2.对象的下转型,其实就是还原的操作 格式:子类名称 对象名 = (子类名称)父类对象: 含义:将父类对象还原为本来的子类对象 Cat cat

java 向上,向下转型

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

多态向上转型向下转型

public static void main(String[] args) { Artist artist; artist = new ViolinArtist();//(向上转型)ViolinArtist为子类,父类引用子类对象 损失自己特有的属性和方法 artist.make();//调用的子类的方法 //artist.play(); 会报错, ViolinArtist va = new ViolinArtist(); if(artist instanceof ViolinArtist){

java中downcast向下转型到底有什么用? 举例说明!

What is the point of downcast? (视频下载) (全部书籍)当一个方法只有子类才有,马克-to-win:不是说基类和子类都有,开始时又是基类指针指向派生类,这时就需要downcast, see the following example. after you cast with SubClass,sc is pure SubClass type. 例1.9.1---本章源码 class SuperClassM_t_w {    int a;    SuperClass

java 向上转型和向下转型

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

Java向上转型和向下转型(附具体样例)

                                            Java向上转型和向下转型(附具体样例) 熬夜整理的关于Java向上和向下转型的样例,很的通俗易懂哦~~~~ 一.向上转型 package com.sheepmu; class Animal { public void eat() { System.out.println("父类的 eating..."); } } class Bird extends Animal { @Override publ