• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

java面向对象之多态

java 搞java代码 3年前 (2022-05-11) 23次浏览 已收录 0个评论

多态的简单理解:

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

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

1.方法的多态性:

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

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

2.对象的多态性:

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

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

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

相关视频教程分享:java免费视频教程

多态的最终体现:

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();
	}
}

www#gaodaima.com来源gaodai$ma#com搞$$代**码)网搞代码

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

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

补充代码如下:

Student stu=(Student)p;//将p对象向下转型实现方法调用
		stu.Learning();

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java面向对象之多态

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址