Java中的多态,引用类型的转换

1.多态分为引用多态和方法多态,见测试类

    package com.wangcf;
    //父类
    public class Animal {
        public void eat(){
            System.out.println("父类的方法");
        }
    }
package com.wangcf;
//子类
public class Bridge extends Animal{

    public void eat(){
        System.out.println("子类鸟重写的方法");
    }

    public void fly(){
        System.out.println("子类鸟独有的可以飞的方法父类中没有");
    }
}
package com.wangcf;
//子类
public class Tiger extends Animal{

}
package com.wangcf;
//测试类
public class Test {
    public static void main(String[] args) {
        //1.引用多态
        Animal obj1=new Animal();    //父类的引用可以指向本类的对象
        Animal obj2=new Bridge();    //父类的引用可以指向子类的对象
        Animal obj3=new Tiger();
        Tiger obj4=new Tiger();
        //Bridg obj3=new Animal();    子类引用不可以指向父类

        //2.方法多态    优先使用子类的方法,若子类没有重写,则使用父类的方法;父类引用不可以调用子类独有的方法
        obj1.eat();    //创建父类的本类对象,调用方法时,调用的是本类的方法
        obj2.eat();    //若父类指向子类对象,调用方法为子类的重写方法
        obj3.eat();    //或者继承方法
        obj4.eat();    //若创建子类的本类对象,没有重写父类的方法,则会调用父类的方法
        //obj2.fly();    不能通过父类的引用调用子类独有的方法

    }
}

 2.引用类型的转换

(1)向上转型,小类型转换为大类型,它是隐式的,自动的,不存在隐患

(2)向下转型,大类型转换为小类型,它是强制转换,存在隐患,会参数内存溢出;可以使用instanceof运算符类避免安全性问题

package com.wangcf;
//测试类
public class Test {
    public static void main(String[] args) {
        Bridge bri=new Bridge();
        Animal animal=bri;//向上转型

        //Bridge bri2=animal;向下转型,错误需要使用强制转换
        Bridge bri1=(Bridge)animal;//强制

        //Tiger tig=(Tiger)animal;//虽然编译器没有报错,运行时会错,我们知道animal是Briger转换来的,它不能转换为Tiger
        //Tiger tiger=(Tiger)bri;    //Cannot cast from Bridge to Tiger
        //使用 instanceof 进行判断
        if(animal instanceof Tiger){
            Tiger tig1=(Tiger)animal;
        }else{
            System.out.println("无法进行类型转换");
        }
    }
}
时间: 2024-11-13 06:24:37

Java中的多态,引用类型的转换的相关文章

java中实现多态的机制是什么?

多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性.在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度:今天我们再次深入Java核心,一起学习Java中多态性的实现. “polymorphism(多态)”一词来自希腊语,意为“多种形式”.多数Java程序员把多态看作对象的一种能力,使其能调用正确的方法版本.尽管如此,这种面向实现的观点导致了多态的神奇功能,胜于仅仅把多态看成纯粹的概念. Java中的多态总是子类型

java中对于多态的理解

面向对象: 类:具体的对象抽象而来,可以抽象的表示一类具有相同特征和行为的对象 对象:是由类的实例化而来,对象是类的一个实例 java中关于多态的理解 打个比方 父亲person有行为这个方法,里面包括几个动作:吃饭,睡觉,走路 父亲有三个儿子,三个儿子都继承了父亲的行为方法,所以三个儿子都有吃饭,睡觉,走路这些动作,但是三个儿子又分别有自己的动作--大儿子A会弹吉他,二儿子B会唱歌,三儿子C会打鼓 ... 1.Person person = new A(); 不是父类对象指向子类引用而是父类引

Java中数据类型及其之间的转换

Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种: 1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits). 2)float长度数据类型有:单精度(32bits float).双精度(64bits double),JAVA中将小数默认为double类型,若要定义float需在数据后面用f声明: 3)boolean类型变量的取值有:ture.false 4)char数据类型有:unicode字符,16位 对

转:Java中String与byte[]的转换

fuzhaoyang 转:Java中String与byte[]的转换 原文地址:http://blog.csdn.net/llwan/article/details/7567906 String s = "fs123fdsa";//String变量 byte b[] = s.getBytes();//String转换为byte[] String t = new String(b);//bytep[]转换为String 做JAVA经常会碰到中文乱码问题,还有各种编码的问题,特别是Stri

Java中数据类型及其之间的转换(转)

Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种: 1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits). 2)float长度数据类型有:单精度(32bits float).双精度(64bits double),JAVA中将小数默认为double类型,若要定义float需在数据后面用f声明: 3)boolean类型变量的取值有:ture.false 4)char数据类型有:unicode字符,16位 对

java中四种引用类型

java中四种引用类型  今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混.后来在网上查资料,感觉收获颇多,现记录如下. 对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地

java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况

/* 样例1: class Parent{ int num = 3; } class Child extends Parent{ int num = 4; } */ /* 样例2: class Parent{ } class Child extends Parent{ int num = 4; } */ /* 样例3: class Parent{ void show(){ System.out.println("Parent Show!"); } } class Child exten

简述JDBC原理 + 在JAVA中异常是什么 + throws 与 throw 区别 + 简单解释以下JAVA中的多态

JDBC原理: 加:加载驱动 链:创建连接 预:创建预编译 执:执行SQL语句(查询需要处理结果级) 释:关闭链接: DBC中定义了一些接口:  1.驱动管理:  DriverManager  2.连接接口  Connection  DatabasemetaData  3.语句对象接口  Statement  PreparedStatement  CallableStatement  4.结果集接口  ResultSet  ResultSetMetaData JDBC只定义接口,具体实现由各个数

Java中实现多态的机制

一,多态定义: 多态就是指一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定. 一,实现多态的机制 java中实现多态的机制是依靠父类或接口的引用指向子类.从而实现了一个对象多种形态的特性.其中父类的引用是在程序运行时动态的指向具体的实例,调用该引用的方法时,不是根据引用变量的类型中定义的方法来运行,而是根据具体的实例的方法. 三,条件 Java实现多态有三个必要条件:继承.重写.向上转型 原文地址:https://www.cn