Java基础入门之多态和对象类型转换
小职 2021-01-21 来源 : 阅读 630 评论 0

摘要:本文主要向大家介绍了Java基础入门之多态和对象类型转换,通过具体的内容向大家展现,希望对大家Java的学习有所帮助。

本文主要向大家介绍了Java基础入门之多态和对象类型转换,通过具体的内容向大家展现,希望对大家Java的学习有所帮助。

Java基础入门之多态和对象类型转换

一、多态

 

1.假设实现一个动物发出的叫声方法,我们知道不同的动物,它们的叫声是不一样的。当在方法中传入一个参数类型,例如猫的叫声、狗的叫声。在同一个方法,当参数不同它们的执行结果各不相同,这就是多态。

 

2.多态是把子类对象赋给父类引用时,调用重写的方法时,表示的是子类的行为。

 

3.怎么实现多态例子

 

//定义接口Fruit

interface Fruit{

    void info();//定义抽象方法info()

}

//定义Cherry类实现Fruit接口

class Cherry implements Fruit{

    double weight=66;//weight属性为重量

    //实现info()方法

    public void info(){

        System.out.println("我是一个樱桃!"+"重量为:"+weight+"g");

  }

}

//定义Apple类实现Fruit接口

class Apple implements Fruit{

    double weight=250;//weight属性为重量

    //实现info()方法

    public void info(){

        System.out.println("我是一个苹果!"+"重量为:"+weight+"g");

  }

}

public class p30 {

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Fruit f1=new Cherry();//创建Cherry对象,Fruit类型变量f1引用

        Fruit f2=new Apple();//创建Apple对象,Fruit类型变量f2引用

        fruitInfo(f1);//调用fruitInfo()方法,把f1参数传入

        fruitInfo(f2);//调用fruitInfo()方法,把f2参数传入

}

    //定义静态的fruitInfo()方法,接受一个Fruit的参数f

    public static void fruitInfo(Fruit f){

        f.info();

  }

}

运行的结果是:

 

我是一个樱桃!重量为:66.0g

我是一个苹果!重量为:250.0g

我是一个樱桃!重量为:66.0g我是一个苹果!重量为:250.0g

 

从上面代码中,定义了一个Fruit接口,定义了抽象方法info()。定义Cherry类和Apple类实现Fruit接口,定义变量weight属性和实现info()方法。“Fruit f1=new Cherry()、Fruit f2=new Apple()”实现子类对象赋给父类引用,调用fruitInfo()方法,父类引用了两个子类对象分别传入f1和f2参数。

 

二、对象类型转换

 

1.子类对象是可以自动转换成父类。

 

2.父类转换成子类对象就需要强制转换。

 

例如:

 

//定义接口Fruit

interface Fruit{

    void info();//定义抽象方法info()

}

//定义Cherry类实现Fruit接口

class Cherry implements Fruit{

    double weight=66;//weight属性为重量

    //实现info()方法

    public void info(){

        System.out.println("我是一个樱桃!"+"重量为:"+weight+"g");

}

    //定义pro()方法

    void pro(){

        System.out.println("产地:浙江");

  }

}

public class p31 {

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Fruit f1=new Cherry();//创建Cherry类的实例对象

        fruitInfo(f1);//调用fruitInfo()方法,把f1参数传入

}

    //定义静态方法fruitInfo(),接受一个Fruit参数f

    public static void fruitInfo(Fruit f){

        f.info();//调用传入参数f的info()方法

        f.pro();//调用传入参数f的pro()方法

  }

}

运行的结果是:

 

 

 

从上面可以看出编译出错了,调用fruitInfo()方法传入Cherry对象,方法参数是Fruit类型的,把Cherry的子类当作父类使用导致程序编译出现错误,程序在运行到f.pro()这行代码发现这个方法没有定义。因为传入的是Cherry类,在Cherry类中定义了pro()方法需要强制转换才可以运行,就是把Fruit类型变量强制转换成Cherry类型。

 

修改后代码如下所示:

 

//定义静态方法fruitInfo(),接受一个Fruit参数f

    public static void fruitInfo(Fruit f){

        Cherry f1=(Cherry)f;

        f1.info();//调用传入参数f的info()方法

        f1.pro();//调用传入参数f的pro()方法

}

再次运行的结果是:

 

我是一个樱桃!重量为:66.0g

产地:浙江

三、instanceof关键字

 

1.instanceof关键字作用

 

判断一个实例对象是否属于一个类,它的语法如下:

 

对象 instanceof 类

2.在进行引用类型转换前先使用instanceof关键字判断,例如:

 

if( f instanceof Cherry){   //如果f指的是Cherry对象类型时,返回的是true。

    Cherry f1=(Cherry)f;

}

四、总结

 

本文主要介绍了多态、对象类型转换、instanceof关键字。

 

多态是子类对象赋给父类引用时,调用重写的方法时,表示的是子类的行为。通过怎么实现多态例子帮助理解这个用法。

 

对象类型转换是子类对象是可以自动转换成父类、父类转换成子类对象就需要强制转换。

 

instanceof关键字用来判断一个实例对象是否属于一个类,希望大家通过本文的学习,对你有所帮助!



关注“职坐标在线”(Zhizuobiao_Online)公众号,免费获取学习教程资料、技术就业咨询

Java基础入门之多态和对象类型转换

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程