1.多态
多态:同类型的对象,表现出不同的形态
表现形式:
多态的前提:有继承/实现关系
有父类引用指向子类对象
有方法重写
多态调用成员的特点
变量调用:编译看左边,运行也看左边 方法调用:编译看左边,运行看右边
多态的优势和弊端
多态的优势:
在多态形式下,右边对象可以实现解耦合,编译扩展和维护
定义方法的时候,使用父类型作为参数,可以接受所有子类对象,体现多态的扩展性与便利
多态的弊端:
不能使用子类的特有功能 解决方法:转换(转化按类型不一致会报错)
自动类型转换、强制类型转换:,转换时用instanceof关键字进行判断
2.包
包名的规则:公司域名反写 + 包的作用,需要全部英文小写,见名知意
使用其他类的规则:
全类名:包名 + 类名
3.final
修饰 方法 : 表明该方法时最终方法,不能被重写
类 : 表明该类时最终类,不能被继承
变量: 叫做常量,只能被赋值一次,不能被修改
细节:final修饰基本数据类型,记录的值不能发生改变;
修饰引用数据类型,记录的地址值不能发生改变,内部的属性值可以发生改变
4.权限修饰符
权限修饰符:用来控制一个成员能够被访问的范围的
可以修饰成员变量,方法,构造方法,内部类
权限修饰符分类: 四种范围从小到大【private<空着不写(缺省/默认)<protected<public】
5.代码块
· 局部代码块
作用:提前结束生命周期(已淘汰)
· 构造代码块:写在成员位置的代码块
作用:可以把多个构造方法中重复的代码抽取出来(不够灵活)
执行时机:创建本类对象时,先执行代码块再执行构造方法
· 静态代码块
格式:static{}
特点:需要通过static关键字修饰,随着类的加载而加载,并且自动触发、只执行一次
使用场景:在类加载的时候,做一些数据初始化的时候使用
6.抽象类和抽象方法
抽象类的作用:
抽取共性时,无法确定方法体,九八方法定义为抽象的。强制让子类按照某种格式重写。
抽象方法的定义格式:
publicabstract返回值类型 方法名(参数列表);
抽象类的定义格式:
publicabstractclass 类名{}
抽象类和抽象方法的注意事项:
·抽象类不能实例化;
·抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类;
·可以有构造方法;
· 抽象类的子类 要么重写抽象类中的所有抽象方法 要么是抽象类。