java 面向对象多态_java面向对象之多态

6c43ee783fc28e55f820b4c913645e0b.png

多态的简单理解:

student类继承了Person类,则student类的对象既是student又是person类

多态性具有两种展现的形式:

1.方法的多态性:

(1)方法的重载:同一个方法可以根据传入的参数的类型或者个数的不同实现不同的功能

(2)方法的覆写:同一个方法可能根据实现子类的不同有不同的实现

2.对象的多态性:

父类与子类实例之间的转换处理

(1)对象向上转型:父类 父类实例 =new 子类实例();自动完成转换

(2)对象向下转型:子类 子类实例 =new (子类)父类实例();强制完成转换

多态的最终体现:

1.为父类引用变量可以指向子类对象

2.多态的前提是必须有子父类关系或者类实现接口关系,否则无法实现多态

3.在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法

多态的成员变量:

1.编译的时候,参考父类中哟没有这个变量,如果有就编译成功,如果没有就编译失败

2.运行的时候,运行的是父类中的变量值

成员变量编译运行皆看父类

多态的成员方法:

1.编译的时候,参考父类中有没有这个方法,如果有就编译成功,如果没有就编译失败

2.运行的时候。运行的是子类的重写方法

成员方法编译看父类,运行看子类

对象的两种转型方式的理解:

1.对象向上转型:

向上转型之后,子类对象只能调用父类拥有的方法,不能调用子类独自拥有的方法,通过向上转型实现多态性的使用

2.对象向下转型:

如果对象向上转型之后想要使用子类独有方法而父类没有的方法,需要使用对象的向下转型

代码演示:public class Person {

public void Eat(){

//在person类中定义一个吃的抽象方法

}

}

public class Student extends Person{

public void Eat(){

System.out.println("学生吃学校食堂");//重写父类中的抽象方法

}

public void Learning()

{

System.out.println("学生在学习");//定义一个student类特有的方法

}

}

public class Test {

public static void main(String[] args) {

// TODO 自动生成的方法存根

Person p=new Student();//通过向上转型定义一个p对象

p.Eat();//这是子父类共有的方法

p.Learning();

}

}

在这个代码中我们通过向上转型调用了一个子类特有的方法,但是会提示如下图:

1ae31ba6ecf4001fe0b794e9412f45b7.png

父类中没有定义Learning方法。但是我们又必须调用子类的特有的方法,此时就需要通过向下转型来实现

补充代码如下:Student stu=(Student)p;//将p对象向下转型实现方法调用

stu.Learning();

想学习更多相关教程请访问:java快速入门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值