Java语言基础之多态

来源:互联网 发布:淘宝电商卖家怎么做 编辑:程序博客网 时间:2024/06/05 22:37

多态指的就是重载和覆盖

Animal类:

package Com;public abstract class Animal { //抽象类public String name;public void walk(){System.out.println(name+"..... Animal walk!!!");}public void howl(){System.out.println(" .....xxxxx.....");}// 规则 规范public abstract void howl2();  //  抽象方法}

Cat类:

package Com;public class Cat extends Animal{public void howl(){System.out.println("..... miaomiao!!!");}@Overridepublic void howl2(){System.out.println("Cat howl2..... miaomiao!!!");}}


Dog:

package Com;public class Dag extends Animal{public void Swim(){System.out.println(".... swim....");}public void howl(){System.out.println(" wangwang");}@Overridepublic void howl2(){System.out.println("Dog howl2  wangwang");}}

Main:

package Com;public class main {/** * @param args */public static void main(String[] args) {      // 1// 用子类赋值给父类,父类animal调用的方法 是子类对象Dog()的方法howl()// 但是父类无法调用父类未声明子类已有的方法swim()Animal animal= new Dag();//animial.swim() 父类中未声明,但是子类中含有swim方法,这条语句无法实现        animal.howl();  // 普通方法        animal.howl2(); //  抽象方法                // 2        //        getMsg(animal); // 传入的是对象dog();                Dag dog = new Dag();        dog.name="xiaohua";        getMsg(dog);}public static void getMsg(Animal animial){animial.howl();if (animial instanceof Dag) //方法1:  判断Dag是不是animal 的子类{Dag dog= (Dag)animial;//animial.Swim(); 父类无法调用子类的方法,但是强制类型转换后可调用子类的方法Swimdog.Swim();}if (animial.getClass()== Dag.class)//方法2 : 判断Dag是不是animal 的子类{Dag dog= (Dag)animial;//animial.Swim(); 父类无法调用子类的方法,但是强制类型转换后可调用子类的方法Swimdog.Swim();}}  }/** * 小结: * Java中的多态就是重载和覆盖 * 重载:函数名相同,但是参数不同方法 * 覆盖:使用子类赋值给父类的方式 * 在覆盖的情况下,分为编译期(编译器在进行编译时的状态)和运行期(实际运行的状态) * 在运行期时,父类声明的方法在子类中同样也有相应声明并实现时,调用的是子类的方法。 * 在编译期时,父类中的被staitc private final修饰和构造器都是调用父类的,不再进行调用子类的。  * */ 



0 0