欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

32-知识笔记(java-多态)

程序员文章站 2024-01-28 11:34:16
...

多态

  1. 同一方法可以根据发送对象的不同而采用多种不同的行为方式。
  2. 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类, 有关系的类)
  3. 多态存在的条件:
  • 有继承关系
  • 子类重写父类方法
  • 父类引用指向子类对象

instanceof 类型转换 (转换的引用类型)

动态编译:类型:可扩展性

多态注意事项:

  1. 多态是方法的多态,属性没有多态
  2. 父类和子类,有联系 否则会报类型转换异常!ClassCastExecption
  3. 存在的条件: 继承关系, 方法需要重写,父类引用指向子类对象!
  4. Father f1 = new Son();

方法无法重写的情况:

  • static 方法,属于类,它不属于实例
  • final 常量
  • private 方法:私有方法
// 一个项目应该只存在一个main方法
public class Application {
        // 类:抽象的, 需要实例化
    // 类实例化后会返回一个自己的对象!
    // student对象就是一个Student类的具体实例!

        //静态方法和非静态方法区别很大
        //静态方法:方法的调用只和左边,定义的数据类型有关
        //非静态:重写
        public static void main(String[] args) {
//                A a = new A();
//                a.test();
//
//                //父类的引用指向了子类
//                B b = new A(); //子类重写了父类的方法
//                b.test();

                // 一个对象的实际类型是确定的
                //可以指向的引用类型就不确定了:父类的引用指向子类

                //Student 能调用的方法都是自己的或者继承父类的
                Student s1 = new Student();
                //Person 父类,可以指向子类,但是不能调用子类独有的方法
                Person s2 = new Student();
                Object s3 = new Student();

                //对象能执行哪些方法,主要看对象左边的类型,和右边关系不大
                // 子类重写了父类方法,执行子类方法
                s2.run();
                s1.run();
                ((Student) s2).eat();
        }

}
相关标签: 知识点积累