zoukankan      html  css  js  c++  java
  • Java学习笔记#多态

    多态:指的是同一个方法调用,由于对象不同,可能会有不同的行为。(现实生活中,同一个方法,具体的实现会不一样)

    要点

    1.多态是方法的多态,不是属性的多态。(多态与属性无关)。

    2.多态的存在有三个必要条件(继承、方法重写、父类引用子类对象)。

    3.父类应用指向子类对象后,用改父类引用子类重写的方法,此时多态就出现了。

    tips

    #重写是方法名相同,参数个数或类型不同,重写是方法名和函数相同,里面的方法不同#

    老师讲解的例子(其中包含转型,向上转型和向下转型):

     1 package cn.sxt.oo2;
     2 
     3 /**
     4  * 
     5  * 测试多态
     6  * @author xingzhuan
     7  *
     8  */
     9 public class TestPolym {
    10     public static void main(String[] args) {
    11         Animal a = new Animal();
    12         animalCry(a);
    13         Dog d= new Dog();
    14         animalCry(d);
    15         
    16         Cat c = new Cat();
    17         animalCry(c);
    18         
    19         Animal q = new Cat();//自动向上转型
    20         animalCry(q);
    21         
    22         Cat q1 = (Cat)q;    //强制向下转型
    23         q1.miao();            //q是Animal,q1是Cat
    24         
    25         //Dog d2 = new Dog();
    26         //Cat c2 = (Cat)d2;
    27         //c2.shout();
    28         
    29     }
    30     
    31     static void animalCry(Animal a) {
    32         a.shout();
    33     }
    34 }
    35 
    36 class Animal{
    37     public void shout() {
    38         System.out.println("有动物吗?吱一声!");
    39     }
    40 }
    41 
    42 class Dog extends Animal{
    43     public void shout() {
    44         System.out.println("吱吱吱!");
    45     }
    46 }
    47 
    48 class Cat extends Animal {
    49     public void shout() {
    50         System.out.println("嘤嘤嘤!");
    51     }
    52     public void miao() {
    53         System.out.println("喵喵喵");
    54     }
    55 }
  • 相关阅读:
    bzoj 2742(树状数组)
    [网络流24题(3/24)] 最长k可重区间集问题(洛谷P3358)
    bzoj 1087(状压dp)
    算法模板整理V1.0
    ACM资料汇总
    算法笔记
    NC20861 兔子的逆序对(数学基础)
    zzuli新生周赛第四周题解
    Gym 102028E Resistors in Parallel(大数)
    HDU 3974 Assign the task(dfs序建线段树)
  • 原文地址:https://www.cnblogs.com/xingzhuan/p/10441153.html
Copyright © 2011-2022 走看看