0
点赞
收藏
分享

微信扫一扫

Java基础----面向对象编程OOP之四

梅梅的时光 2022-02-01 阅读 89

12.多态—OOP特征之三

  • 多态是同一个行为具有多个不同表现形式或形态的能力。

  • 多态:即同一方法可以根据发送对象的不同而采用不同的行为方式。

  • 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(指父类或者有关系的类)

  • 多态注意事项:

    • 多态是方法的多态,属性没有多态
    • 要有继承的关系:父类和子类,要有联系。否则类型转换异常 ClassCastException!
    • 存在条件:继承关系,方法需要重写,父类引用指向子类对象!
    • 有些方法不能被重写:
      • static方法:静态方法,属于类的方法,不属于实例,不可被重写
      • final:常量,不可被重写
      • private:私有方法,不可被重写
    public class Application {
        public static void main(String[] args) {
            //一个对象的实际类型是确定的
            new Person();
            new Student();
    
            //对象可以指向的引用类型不确定:父类的引用指向子类
            //Student 子类:能调用的方法都是自己的或者继承自父类的!
            Student student1 = new Student();
            //Person 父类:可以指向子类,但是不能调用子类独有的方法!子类重写了方法时调用子类的方法!
            Person student2 = new Student();
            Object student3 = new Student();
    
            //对象能执行哪些方法,主要看对象左边的类型,和右边关系不大!
    
            //方法的调用:父类和子类都有的方法
            student2.run();     //子类重写了父类的方法,则执行子类的方法
            student1.run();
            //方法的调用:子类有而父类没有的方法
            //student2.eat();   不可行,子类没有此方法!
            ((Student)student2).eat();  //如要调用子类特有的方法,需强制类型转换成子类类型
            student1.eat();
        }
    }
    
    public class Person {
        public void run() {
            System.out.println("Person run");
        }
    }
    
    public class Student extends Person {
        @Override
        public void run() {
            System.out.println("Student run");
        }
        public void eat() {
            System.out.println("Student eat");
        }
    }
    

------------------------------“笔记整理自跟着《狂神说Java》”----------------------------------​

举报

相关推荐

0 条评论