• OO面向对象——多态


    多态

    • 动态编译:可扩展性

    • 及同一种方法可以根据发送对象的不同而采用不同的行为方式

    • 一个对象的实际类型是确定的,但是指向对象的引用类型有很多

    public class person {
       public void run(){
           System.out.println("run");
      }
    }
    public class Student extends person{
       @Override
       public void run() {
           System.out.println("mo");
      }
    }
    public class Test {
       public static void main(String[] args) {
           person a = new Student();
           Student b = new Student();
           a.run();
           b.run();
      }
    }

    子类重写父类的方法后,创建的对象无论时父类的引用还是子类的引用。都会执行子类的重写后的方法。

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

       public void say(){
           System.out.println("say");
      }
    }
    public class Student extends person{
       @Override

       public void run() {
           System.out.println("mo");
      }
    }
    public class Test {
       public static void main(String[] args) {
           person a = new Student();
           Student b = new Student();
           a.run();
           b.run();
           b.say();
           a.say();
      }
    }

    子类不重写父类的方法,会继承父类的逻辑。子类使用的方法是自己的或者继承父类的。

    父类型可以指向指向子类,但是不能调用子类独有的方法。

    对象可以执行哪些方法看左边的引用类型,和右边无关。

    • 多态的注意事项

      1.多态是方法的多态,属性没有多态。

      2.父类和子类有联系,可以进行转换

      3.多态存在条件:继承关系,方法需要重写,父类引用指向子类对象。

      不能重写的方法:static修饰的方法、final修饰的方法、private修饰的方法

       public final void teach(){
             System.out.println("111");
      }

        public static void teach(){}

    静态方法属于类 ,应使用类名+方法,因为超类和子类类名不同,同名的静态方法完全没有关系。

     
     
  • 相关阅读:
    初始线程(相关理论)
    python并发编程之多进程2-(数据共享及进程池和回调函数)
    python并发编程之多进程1--(互斥锁与进程间的通信)
    Cpython支持的进程与线程
    网络编程之进程理论简介
    python之网络socket编程
    Gray码 (格雷码) 【二进制】
    [BZOJ 2350] [Poi2011] Party 【Special】
    [BZOJ 1033] [ZJOI2008] 杀蚂蚁antbuster 【模拟!】
    [BZOJ 3209] 花神的数论题 【数位统计】
  • 原文地址:https://www.cnblogs.com/xianxiansir/p/12663835.html
Copyright © 2020-2023  润新知