什么是多态

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

子类转换成父类的规则:

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

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

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

/**
* 宠物类,狗狗和企鹅的父类
*/
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. 同源策略 JSONP(实践篇)

    JSONP详解 json相信大家都用的多,jsonp我就一直没有机会用到,但也经常看到,只知道是“用来跨域的”,一直不知道具体是个什么东西.今天总算搞明白了.下面一步步来搞清楚jsonp是个什么玩意. ...

  2. SharePoint 中关于event receivers的讨论

    今天一早,跟几个小伙伴在群里讨论了有关事件触发器的东西,感觉收获颇多,拿出来和大家分享.讨论的内容,主要就是关于事件触发器的同步/异步的设置以及作用. 其实接触SharePoint颇久,对于事件触发器 ...

  3. Bit-Coin收入的一分钱

    好吧,这是我在Slush's pool上对Bit-coin收入的第一分钱. 回想起来,2013年平安夜开始到今天,将近3个月没日没夜窝在这个矿里挖矿 从最开始的集成显卡挖,买了显卡挖,加了显卡挖,使用 ...

  4. Python: 解决pip安装源被墙的问题

    pip install <package> -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.c ...

  5. 一些C语言学习的国外资源

    下面的列表是在网上收集整理的C语言资料,包括PDF等多种格式 A Tutorial on Pointers and Arrays in C Beej's Guide to C Programming ...

  6. Android代码混淆官方实现方法

    首先查看一下 “project.properties” 这个文件: # This file is automatically generated by Android Tools.# Do not m ...

  7. 【改】IOS-百度地图API用点生成线路、导航、自定义标注 2013年11月更新

    IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽IOS百度地图开发POISearch搜索附近停车场,附近加油站IOS百度地图视角跳到用户当前位置IOS百度地图开发实时路况IOS开发百 ...

  8. Android开发者的Git&Github(一)

    安装Git: Linux(以Ubuntu为例): sudo apt-get install git-core Windows: 访问网址http://msysgit.github.io/下载安装包 下 ...

  9. 在Web api2 中传递复杂参数的一点心得

    这两天在做的一个项目基于webapi2,期间遇到了复杂参数传递的问题.其中刚好看到园友的这篇文章,但是我测试收结果是失败的,还不知道是什么原因.最终经过思考后,找到了一种方法,和大家分享下. 在前端我 ...

  10. python数据结构-列表-建立/索引/反转