多态

多态

package com.zishi.oop.demo06;

public class Application {
   public static void main(String[] args) {

       //一个对象的实际类型是确定的
       //new Student();
       //new Person();

       //可以指向的引用类型就不确定了:父类的引用指向子类

       //Student 能调用的方法都是自己的或继承父类
       Student s1 = new Student();

       //Person 父类型,可以指向子类,但不能调用子类独有的方法
       Person s2 = new Student();
       Object s3 = new Student();

       //对象能执行哪些方法,主要看对象左边的类型,与右边的关系不大

       s1.run();
       s2.run();  //子类重写了父类的方法,所以执行子类的方法

       //s2.eat(); //不能调用
      ((Student) s2).eat();   //强制类型转换,高转低

  }
}
package com.zishi.oop.demo06;

public class Student extends Person {
   @Override
   public void run() {
       System.out.println("son");
  }

   public void eat(){
       System.out.println("eat");
  }
}
package com.zishi.oop.demo06;

public class Person {

   public void run(){
       System.out.println("run");
  }

/*
多态注意事项:
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系
((Student) s2).eat();   //强制类型转换,高转低
类型转换异常:ClassCastException
3.存在条件:继承关系,方法需要重写,父类引用指向子类对象
   格式:Father f1 = new Son();

不能使用重写的情况:(多态就更不能)
1.static 静态方法,属于类,不属于实例
2.final 常量
3.private 方法:私有



*/
}

 

posted @ 2021-07-26 21:59  子时未临  阅读(53)  评论(0编辑  收藏  举报