Java中的多态的用途
2016-05-06 11:17
465 查看
package com.saiermeng;
/*
多态:可以理解为事物存在的多种体现形态。
人:男人,女人。
动物:猫,狗。
猫 x = new 猫();
动物 x = new 猫();
1,多态的体现
父类的引用指向了自己的子类对象。
父类的引用也可以接收自己的子类对象。
2,多态的前提
必须是类与类之间有关系。要么继承,要么实现。
通常还有一个前提:存在覆盖。
3,多态的好处
多态的出现大大的提高程序的扩展性。
4,多态的弊端:
提高了扩展性,但是只能使用父类的引用访问父类中的成员。
5,多态的应用
*/
/*
动物,
猫,狗。
*/
abstract class Animal1{
abstract void eat();
}
class Cat extends Animal1{
public void eat(){ //public static void main(String[]args){}
System.out.println("吃鱼");
}
public void catchMouse(){
System.out.println("抓老鼠");
}
}
class Dog extends Animal1{
public void eat(){
System.out.println("吃骨头");
}
public void kanJia(){
System.out.println("看家");
}
}
class Pig extends Animal1{
public void eat(){
System.out.println("饲料");
}
public void gongDi(){
System.out.println("拱地");
}
}
public class DuoTaiDemo1 {
public static void main(String[]args){
Animal1 c = new Cat();
c.eat(); //如果写c.catchMouse就会报错,是因为在主函数中只能调用父类中拥有的共有的行为。
//Cat c = new Cat();
//Function(c);
}
public static void Function(Animal1 c){
c.eat();
}
}
运行的结果是:
吃鱼
上面说到多态的前提还存在覆盖,下面举例子来解释覆盖的意思:
package com.saiermeng;
public class fugai {
public static void main(String[] args){
Zi z =new Zi();
z.show();
}
}
class Fu{
void show(){
System.out.println("nihao");
}
}
class Zi extends Fu{
//子类把父类的方法给进行了重写,或者改变就叫做覆盖
void show(){
System.out.println("zaijian");
}
}
运行的结果是zaijian.
/*
多态:可以理解为事物存在的多种体现形态。
人:男人,女人。
动物:猫,狗。
猫 x = new 猫();
动物 x = new 猫();
1,多态的体现
父类的引用指向了自己的子类对象。
父类的引用也可以接收自己的子类对象。
2,多态的前提
必须是类与类之间有关系。要么继承,要么实现。
通常还有一个前提:存在覆盖。
3,多态的好处
多态的出现大大的提高程序的扩展性。
4,多态的弊端:
提高了扩展性,但是只能使用父类的引用访问父类中的成员。
5,多态的应用
*/
/*
动物,
猫,狗。
*/
abstract class Animal1{
abstract void eat();
}
class Cat extends Animal1{
public void eat(){ //public static void main(String[]args){}
System.out.println("吃鱼");
}
public void catchMouse(){
System.out.println("抓老鼠");
}
}
class Dog extends Animal1{
public void eat(){
System.out.println("吃骨头");
}
public void kanJia(){
System.out.println("看家");
}
}
class Pig extends Animal1{
public void eat(){
System.out.println("饲料");
}
public void gongDi(){
System.out.println("拱地");
}
}
public class DuoTaiDemo1 {
public static void main(String[]args){
Animal1 c = new Cat();
c.eat(); //如果写c.catchMouse就会报错,是因为在主函数中只能调用父类中拥有的共有的行为。
//Cat c = new Cat();
//Function(c);
}
public static void Function(Animal1 c){
c.eat();
}
}
运行的结果是:
吃鱼
上面说到多态的前提还存在覆盖,下面举例子来解释覆盖的意思:
package com.saiermeng;
public class fugai {
public static void main(String[] args){
Zi z =new Zi();
z.show();
}
}
class Fu{
void show(){
System.out.println("nihao");
}
}
class Zi extends Fu{
//子类把父类的方法给进行了重写,或者改变就叫做覆盖
void show(){
System.out.println("zaijian");
}
}
运行的结果是zaijian.
相关文章推荐
- java中的多线程
- 解决无限 This file is indented with tabs instead of 4 spaces
- Spring中加载xml配置文件的六种方式
- 完整版java读取apk、ipa包名、版本名、版本号等信息
- extjs struts2 文件上传的备忘录 .
- JAVA语言之全排列的递归实现
- Java WebService 简单实例
- windows下安装Java 和 scala
- Java 对数据库连接 的封装
- 如何解决Fail to create the java Virtual Machine
- Spring的常见问题及答案
- Spring整合DWR comet 实现无刷新 多人聊天室
- JAVA NIO non-blocking模式实现高并发服务器
- spring-core组件详解――PropertyResolver属性解决器
- Spring mvc 日期转换 支持多种格式
- Java中unicode增补字符(辅助平面)相关用法简介
- 转: javaWeb学习总结(见过最好的知识合集,相当给力,强烈推荐)
- eclipse安装jetty插件
- java锁机制简介以及CAS操作
- Java关键字 ClassName.this(类名.this)的理解