最近学习Java里面的多态下面是个人的整理:

多态存在的3个必要条件:
  1.要有继承
  2.要有方法的重写
  3.父类引用指向子类对象(对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接)

  对于多态,可以总结它为:
  一、使用父类类型的引用指向子类的对象;
  二、该引用只能调用父类中定义的方法和变量;
  三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)
  四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。
  五、如果继承的子类继承父类的的一个方法后加以重载,则该父类的引用不能使用重载之后的那个方法。


public class Textduotai {

    public static void main(String[] args) {
// TODO Auto-generated method stub
    /*这时多态就很好的体现了,你想给你的宠物喂食,只需要添加相对应动物类,和食物类的子类,比如你有养了一只乌龟,只需要写一个乌龟类让他继承动物类,和它相对应的food
  *说话,你想喂鱼给你的猫吃就只需要调用feed方法,结果你的猫吃到了鱼:程序输出我叫小白,我喜欢吃鱼,
   */
Master master = new Master();
master.feedFood(new Cat(), new Fish()); } }
//定义动物类,动物有两个成员属性name和age
class Animal{
String name;
int age;   //成员变量的访问器和修改器即get和set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
  //定义动物两个方法动物都会叫
public void animalcay(){
System.out.println();
}
  //动物都要吃东西
public void eat(){
System.out.println();
} }
  //定义猫类并且让猫类继承动物类
class Cat extends Animal{
String name;
int age; public Cat(){
System.out.println("小白");
}
  //父类方法的重写
public void animalcay(){
System.out.println(" 喵喵叫");
}
public void eat(){
System.out.print("I like fish");
}
}
//定义狗类,并且让狗类继承动物类的方法
class Dog extends Animal{
String name;
int age; public Dog(){
System.out.println("我叫小黑");
}
  //夫类方法的重写
public void animalcay(){
System.out.println(" 旺旺叫");
}
public void eat(){
System.out.print("我喜欢吃骨头");
}
}
//定义食物类
class Food{
String name;
public void showName(){
System.out.println();
}
}
class Fish extends Food{
String name;
  //重写父类方法
public void showName(){
System.out.println("我喜欢吃鱼");
}
}
class Bone extends Food{
String name;
  //重写父类方法
  public void showName(){ 
    System.out.println("骨头");
   }
} //定义主人类,比如要给动物喂食
class Master {
String name ;
public Master(){ }
public Master(String name){
this.name = name;
}
public void feedFood(Animal an,Food food){
System.out.print(name+" "); an.eat();
System.out.println("最喜欢食物:");
food.showName();
}
}

在上面代码中我们要实现主人给动物喂食物,我们定义动物类,猫类和狗类都继承于动物类,定义了食物类,和它的两个子类鱼和骨头,在上面我们可以看出多态就是同一引用或者类型多种引用就叫多态

最新文章

  1. 如果你发现mysql的外键约束不管用了
  2. OpenCASCADE Ring Type Spring Modeling
  3. 配置javac环境
  4. django学习记录--第一个网页“hello django”
  5. Nginx系列4之基础配置
  6. Android Gradle的使用
  7. OS开发拓展篇—应用之间的跳转和数据传
  8. 刀哥多线程之gcd-01-sync&async
  9. Java-J2SE学习笔记-字符串转化为二维数组
  10. Linux下RPM软件包的安装及卸载
  11. JavaScript设置简单的自动时间
  12. wifi驱动总结(2)
  13. cursor的moveToNext()与moveToFirst()
  14. NumPy的思考……
  15. “微信小程序商城构建全栈应用”开发小记
  16. 微信小程序笔记<六>模块化 —— module.exports
  17. linux命令学习之:cp
  18. MySQL中的联结表
  19. 【已解决】Android微信开放平台,申请移动应用的 应用签名 如何获取
  20. C# 图像自动切换

热门文章

  1. 201521123002《Java程序设计》第8周学习总结
  2. 201521123102 《Java程序设计》第4周学习总结
  3. 201521123059 《Java程序设计》第一周学习总结
  4. 201521123002《Java程序设计》第12周学习总结
  5. 201521123019 《Java程序设计》第11周学习总结
  6. 201521123108 《Java程序设计》第11周学习总结
  7. Git 查看/修改用户名、邮箱
  8. Shiro第四篇【Shiro与Spring整合、快速入门、Shiro过滤器、登陆认证】
  9. Struts2第二篇【开发步骤、执行流程、struts.xml讲解、defalut-struts讲解】
  10. iOS开发中KVC、KVO简介