1.什么是多态性
* 同一个动作与不同的对象产生不同的行为
* 多态:必须有继承(不同的子类重写父类方法后体现出来的形式不一样)或者接口的实现
* 一个对象的多种形态叫做多态
*
* 2.形成多态的必要条件:
* (1).继承:存在子类和父类的关系
* (2).接口实现:定义一个类实现对应的接口
* (3).重写:子类重写父类的方法
* (4).重载:调用相同的方法名,实现的功能不一样
* (5).子类对象的多态性(重点):父类的引用指向子类的实例
*
* 3.程序分为两种状态,编译状态和运行状态
* 当存在父类的引用指向子类的实例的时候,比如demo1继承了demo,demo d = new demo1();
* 对于多态来说,编译期间编译时看左边,定义对象的类型(demo)是什么对象就是什么类型
* 运行时看右边,执行后也是子类重写后的方法,对象也是重写后的类型(demo1)
*
* 4.上转型和下转型
* 上转型是将子类对象交给父类引用(子类转型成父类,自动转换)
* 下转型是将父类转换成子类,强制转换
*
* 5.对象的多态性
* (1).父类的引用指向子类的实例
* (2).在编译期间,调用的是父类的方法,指向的是父类,在运行期间执行的是子类的方法(编译看左边,运行看右边)。
*
* instanceof:用于判断类型是否匹配
*
* final关键字:
* 1.可以修饰类:这个类不能被被继承,但是可以继承其他的类
* 2.可以修饰方法:这个方法是一个最终的方法,不能被重写
* 3.修饰成员变量:一个成员变量加上final关键字后没有默认值了,且成员变量必须立刻赋值,赋值后不可被改变
* 4.修饰局部变量:局部变量的值不能发生更改,在定义时不用直接赋值,
*
*
* static:
* 修饰成员变量,这个对象就不属于这个对象,而是属于类本身,我们可以“通过类名.属性名”的方式去访问
* 只要通过这个类创建的对象,这些对象就共享这个属性
* 当其中一个对象对类中的变量更改以后,其他对象的值也会随之更改
* 类变量随着类的加载而加载
* 类变量放在方法区的静态域里面,而不是放在堆里面
* VS实例变量(非static变量,属于对象类型),各个对象都各自有一套副本
* 在静态方法里面,只能加载静态方法或静态变量,,在普通方法里面,可以调用静态方法或静态变量,因为静态方法或者静态变量加载时机
* 早于实际变量和实际方法的时机
*
* static方法还可以修饰代码块:
* 代码块的作用:完成初始化
* 非静态的代码块:{name = “张三”;}
* 可以给类的属性进行初始化操作,同时还可以调用类的方法(静态的、非静态的)
* 里面可以有输出语句
* 随着对象的创建而加载,每创建完一个对象,就加载一次代码块
*
* 静态的代码块:static{}
* 里面可以有输出语句
* 随着类的加载而加载,只会加载一次
* 静态的只能加载静态的,不能加载非静态的
* 静态代码块里面只能调用类变量和类方法
* 作用在JDBC
*
*
* 对属性赋值:
* (1).默认初始化
* (2).显示初始化
* (3).通过构造方法(set方法)进行初始化
* (4).初始化块
*/
多态、final关键字、static关键字
最新推荐文章于 2022-07-18 17:45:24 发布