Java 基础篇day07

面向对象三大特征之二 继承

权限修饰符

掌握四种权限修饰符的特点和作用
修饰作用范围
private 只能在本类中访问,其他地方不能访问
缺省(包访问权限) :只能在本类中或者同一个包下的其他类中
protect:在本类中,同一包下的其他类中,其他包下的子孙类中(在其他包中的子类中,即要继承的类,子类对象或者方法,)
public :任意地方

单继承和Object类
Java中的类不支持多继承,但支持多层继承

Object类是Java是所有类的祖宗类。我们写的任何一个类,其实都是他的子类

方法重写
当子类继承父类之后,子类可以重写父类的方法,子类可以重写一个方法名称,参数列表一样的方法,去覆盖父类中的这个方法,这就是方法重写
注意:方法的访问,Java会遵循就近原则
重写小技巧:使用Override注解,它可以制定Java编译器,检查我们方法重写的格式,可读性更好

子类重写父类方法的时候,访问权限必须大于父类的访问方法

方法重写在开发中的常见应用场景
子类重写Object类的toString,以便返回对象的内容

在子类方法中访问其他成员(成员变量,成员方法),根据就近原则调用其他成员
使用super来调用父类元素的成员 列如super.name

子类构造器的特点?
子类的全部构造器,都会先调用父类的构造器,再执行自己

this()调用兄弟构造器
this()的作用是在构造器中调用本类的其他构造器
this()和super()的使用必须放在构造器的第一行

面向对象的三大特征之多态
多态在继承,实现情况下的一种现象,表现为对象多态,行为多态
多态具体代码体现
People p1 = new Studnet();
p1.run();
People p2 = new Student();
p2.run();

多态的前提
又继承实现关系
存在父类引用子类对象;
存在方法重写

多态的好处
在多态形式下,右边对象是解耦合的,更便于扩展和维护。
多态下不能调用子类的独有功能。可以解耦合,扩展性更强;
使用父类类型的变量作为方法的形参时,可以接收一切子类对象。

定义方法时,使用父类类型的形参,可以接受一切子类对象,拓展性更强,更为便利

多态下不能使用子类的独有功能

类型转换
自动类型转换:父类 变量名 = new 子类();
强制类型转换:子类 变量名 = (子类) 父类变量
可以把对象转换成其真正的类型,从而解决了多态下不能调用子类独有方法的问题。

强制类型转换的一个注意事项
存在继承/实现关系就可以在编译阶段进行强制类型转换,编译阶段不会报错。
运行时,如果发现对象的真实类型与强转后的类型不同,就会报类型转换异常(ClassCastException)的错误出来。

所以在强制类型前,要先使用instanceo判断当前对象的真实类型:对象instanceof类型

final关键字
final 最终
可以用来修饰 类,方法,变量
修饰类:该类被称为最终类,特点是不能被继承
修饰方法:该方法被称为最终方法,特点是不能被重写了
修饰变量:该变量只能被赋值一次

final修饰变量的注意
final修饰基本类型的变量,变量存储的数据不能被改变。
final修饰引用类型的变量,变量存储的地址不能被改变,但地址所指向对象的内容是可以被改变的。

**常量 **
使用了static final修饰的成员变量就被称为常量
作用:通常用于记录系统的配置信息

使用常量记录系统配置信息的优势,执行原理
代码可读性更好,可维护性也更好
程序编译后,常量会被宏替换:出现常量的地方全部会被替换成其记住的字面量。这样可以保证使用常量和直接用字面量的性能是一样的

枚举是一种特殊类

点击查看代码
修饰符 enum 枚举类名{

变量名1,变量名2,变量名3
}

public enum A{
X,Y,Z;
...
}

枚举类中的第一行,只能写一些合法的标识符(名称),多个名称用逗号隔开
这些名称,本质是常量,每个常量都会记住枚举类的一个对象

posted @ 2023-11-05 22:16  奕帆卷卷  阅读(13)  评论(0)    收藏  举报