博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java多态性理解
阅读量:4334 次
发布时间:2019-06-07

本文共 1639 字,大约阅读时间需要 5 分钟。

一  多态的基础是继承,重写,父类的引用指向子类对象,接口是多态最常见的实现方式。

概念性的东西,先说这么多,以上的都是重点,  继承 ,重写 ,父类的引用指向子类对象。

下面贴上代码  ,一步步来看到底什么是多态。

父类  动物类,然后会有Dog和Cat类继承此类

public class DongWu {				public void eat(){			System.out.println("动物会吃东西");		}				public void age(){			System.out.println("动物的年龄");		}}

 Dog类

public class Dog extends DongWu {	//重写父类的eat()方法	public void eat(){		System.out.println("狗吃骨头");	}	//重写父类的age()方法	public void age(){		System.out.println("10岁的狗狗");	}}

  Cat类

public class Cat extends DongWu {	//重写父类的eat()方法	public void eat(){		System.out.println("猫吃鱼");	}	//重写父类的age()方法	public void age(){		System.out.println("5岁的猫咪");	}}

 如果平时,我们调用cat和dog累中的两个方法,需要这样写。

 为每一个类指定一个对应的方法,这样的工作太繁琐了,我们可以改变一下写法

public class Test {		public static void main(String[] args) {			//new出两个类的实例对象			Cat c=new Cat();			Dog d=new Dog();			//new出本类对象test 没有使用static			Test test=new Test();			test.test(c);			test.test(d);		}		public  void test(Dog d){			d.age();			d.eat();					}		public  void test(Cat c){			c.age();			c.eat();					}		}

  将 原来的  test方法中的参数类型改成了父类的类型,最后的结果是一样的。

  编译类型是DongWu,运行时的实际类型变成了  具体的类型 比如例子中的 d,d,dw

  这样就不用为每一个类型写一个方法,只需要写一个方法,灵活方便,程序运行时根据传入的具体参数类型去执行相对应的方法

  对于  

DongWu dw=new Cat();这种方式new出的实例对象,只能调用父类中定义过的方法,子类中新增加的方法是无法调用的。
public class Test {		public static void main(String[] args) {			//new出两个类的实例对象			Cat c=new Cat();			Dog d=new Dog();			//父类也就是DongWu的 引用 指向了子类的实例对象 (new Cat())			DongWu dw=new Cat();			//new出本类对象test 没有使用static			Test test=new Test();			test.test(c);			test.test(d);			test.test(dw);		}		//将参数类型定义为父类的类型		public  void test(DongWu dw){			dw.age();			dw.eat();					}

  

转载于:https://www.cnblogs.com/sanduweiliangxtx/p/6000531.html

你可能感兴趣的文章
PHP Curl发送数据
查看>>
HTTP协议
查看>>
CentOS7 重置root密码
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Ubuntu菜鸟入门(五)—— 一些编程相关工具
查看>>
valgrind检测linux程序内存泄露
查看>>
Hadoop以及组件介绍
查看>>
1020 Tree Traversals (25)(25 point(s))
查看>>
第一次作业
查看>>
“==”运算符与equals()
查看>>
单工、半双工和全双工的定义
查看>>
Hdu【线段树】基础题.cpp
查看>>
时钟系统
查看>>
BiTree
查看>>
5个基于HTML5的加载动画推荐
查看>>
水平权限漏洞的修复方案
查看>>
静态链接与动态链接的区别
查看>>
Android 关于悬浮窗权限的问题
查看>>