什么是多态

同一个实现接口,使用不同的实例而执行不同的操作

子类转换成父类的规则:

*将一个父类的引用指向一个子类对象时,称为上转型,自动进行类型转换

*此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法

*此时通过父类引用变量无法调用子类特有的方法

/**
* 宠物类,狗狗和企鹅的父类
*/
package cn.yy.test01; public abstract class Pet {
private String name;
private int health;
private int love; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
} public abstract void eat();
}
package cn.yy.test01;
/**
*
* 狗狗类
* @author CKW
*
*/
public class Dog extends Pet {
private String strain;//品种 public String getStrain() {
return strain;
} public void setStrain(String strain) {
this.strain = strain;
} public Dog(String name,String strain) {
super();
this.strain = strain;
}
public Dog() {
super();
// TODO Auto-generated constructor stub
} /**
* 实现狗狗吃饭方法
*
*/
@Override
public void eat() { } }
package cn.yy.test01;
/**
* 企鹅类
* @author CKW
*
*/
public class Penguin extends Pet {
private String sex;//性别 public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
/**
* 实现企鹅吃饭方法
*/
@Override
public void eat() {
// TODO Auto-generated method stub } }
package cn.yy.test01;
/**
* 主人类
* @author CKW
*
*/
public class Master {
private String name="";//主人名字
private int money=;//元宝数 public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getMoney() {
return money;
} public void setMoney(int money) {
this.money = money;
} public Master (String name,int money){
this.name=name;
this.money=money;
} /**
* 主人给宠物喂食
*/
public void feed(Pet pet){
pet.eat();
} //主人给Dog喂食
public void feed(Dog dog){
dog.eat();
} //主人给Penguin喂食
public void feed(Penguin pgn){
pgn.eat();
} }
package cn.yy.test01;

public class Test {

    public static void main(String[] args) {
// TODO Auto-generated method stub
Dog dog=new Dog("偶偶","雪瑞纳");
//Penguin penguin=new Penguin();
Master master=new Master("王先生", );
master.feed( dog);//主人给狗狗喂食 } }

关于Java多态的更多相关文章

  1. Java 多态——与C++的比较

    学习了Java和C++之后,由于长期不使用C++,而java的基础知识掌握不牢,现在已经搞不清java多态了.现在先来谈谈java多态,稍后有时间再更新C++的多态,并进行比较~ 一. Java的多态 ...

  2. C++和java多态的区别

    C++和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报  转载自:http://www.cnblogs.com/plmnko/archive ...

  3. 深入理解Java多态机制

    从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令. invokestatic: 调用静态方法. invokespecial: 调用实例构造器<init>方法,私 ...

  4. Java 多态 父类和子类方法的访问控制权限

    Java 多态 父类和子类方法的访问控制权限 @author ixenos 父类和子类方法的访问控制权限 继承是为了扩展类的功能,而这种扩展显然就是对一个原始类的扩展,目的还是向上转型来调用,所以这就 ...

  5. Java多态(二)

    public class ExtendsTest { public static void main(String[] args) { A a1 = new A(); A a2 = new B(); ...

  6. 从JVM角度看Java多态

    首先,明确一下,Java多态的三个必要条件: 1. 继承 2. 子类重写父类方法 3. 父类引用指向子类对象 然后看一个例子 package test.xing; class Father{ prot ...

  7. 关于java多态的理解

    要理解多态,就必须有一个大的理解方向,不然很容易绕进去. 首先知道多态的释义:多态性是指一个名词可以有多种语义. 对于java的多态性学习者来说,就是必须要知道多个同名方法在不同情况下的使用规则. j ...

  8. Java经验杂谈(2.对Java多态的理解)

    多态是面向对象的重要特性之一,我试着用最简单的方式解释Java多态: 要正确理解多态,我们需要明确如下概念:・定义类型和实际类型・重载和重写・编译和运行 其中实际类型为new关键字后面的类型. 重载发 ...

  9. 学JAVA第十六 天,JAVA多态

    今天老师讲了多态的使用 多态是同一个行为具有多个不同表现形式或形态的能力. 多态的优点: 1. 消除类型之间的耦合关系 2. 可替换性  3. 可扩充性 4. 接口性 5. 灵活性 6. 简化性 我个 ...

  10. 对java多态的理解

    java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是“向上转型”. 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过 Cat c = new C ...

随机推荐

  1. 收集oracle统计信息

    优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN:列统计: --列中唯一值的数量(NDV),NULL值的数量,数据分 ...

  2. cocospods的安装与应用

    安装cocospods 一,升级Ruby环境 ~ xxx$ sudo gem update --system   二,安装Cocoapods时需要访问cocoapods.org,该网站可能被墙掉,但是 ...

  3. openstack kilo compute更新后报错IncompatibleObjectVersion: Version 1.2 of PciDeviceList is not supported

    前几天在compute节点更新openstack的包后,发现报错IncompatibleObjectVersion: Version 1.2 of PciDeviceList is not suppo ...

  4. 问题解决——cout 输出 CString

    Unicode下 wcout<<strText.GetString()<<endl;

  5. 关于SqlDateTime溢出的问题

    问题:  项目中为了在时间上保持一致性,将所有时间都转化为了UTC时间. 其中有一段SqlDateTime.MinValue的代码,由于疏忽将其转为UTC时间后导致了 "SqlDateTim ...

  6. 通过反射获取SSM的controller层的注解以及注解中的value值

    package com.reflection.test; import java.lang.annotation.Annotation; import java.lang.reflect.Invoca ...

  7. R语言与数据分析

    K最近邻(k-Nearest Neighbor,KNN)分类算法 R语言实现包:R语言中有kknn package实现了weighted k-nearest neighbor. 决策树: R语言实现决 ...

  8. Xamarin.Android splash页面瞬间响应_避免APP启动闪白屏

    Application和Activity中的onCreate都进行了优化,基本没有耗时操作,但是启动应用之后还是会闪现一下白色背景,然后才进入Splash页面,对比了一下QQ.微信.微博等客户端,点击 ...

  9. php redis 获取指定前缀的所有key

    php redis 获取指定前缀的所有key 以laravel框架为例: $key = $this->redis->keys('db:shipping:shippingId:' . &qu ...

  10. 使用jmx监控tomcat

    1.在tomcat启动过程中,开启相应的参数配置: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -D ...