面向对象:继承
面向对象的特点:
- 继承:用来表达概念上具体化严肃的具体概念;子类可以继承父类的属性和方法。
- 子类的构造器中,首先调用父类的默认构造器(无参构造器)。
- 如果父类没有无参构造器,则在子类中构造器中指定父类的有参构造器。
- super和this在构造器中只能出现在第一行,并且只能有存在一个
- 编程建议:建议父类中保留无参的默认构造器。这样就能保证任何子类的方法都可以调用父类的默认构造器。
对象实例化过程:
- 首先检查类是否被加载,不是加载这个类,而是先加载所有父类,只加载一次,加载以后是一个对象(读取.class 文件到内存)
- 分配父类类型的空间,按照属性分配空间,属性自动初始化
- 执行父类属性的初始值赋值
- 执行父类构造器代码
- 父类构造器结束,返回子类构造器,按照属性分配子类空间,子类属性自动初始化
- 执行子类属性的初始值赋值
- 执行子类的构造器代码
所有类默认集成于Object(java.lang.Object)==>所有类都是东西
向上造型,父类的引用指向子类,子类型转换成为父类型。
向下转型,子类型指向父类型,父类型转换成子类型,需要进行强制转换。
继承中的语法现象:
- 父类型的变量可以引用子类型的实例,父类型的实现就是多态
- 子类可以父类的方法,并且可以修改父类的内容/*方法的重写,子类覆盖父类的相同方法签名的方法,方法的重写是由方法的动态绑定实现的,就是java虚拟机运行时候,确定执行哪个对象的哪个方法,java最终执行子类的方法*/
继承 关键字:extends
继承的好处:
A》提高了代码的复用性
B》让类与类之间产生了关系,这是多态的前提
继承的特点
A》java只承认单继承,不存在多继承
B》多层继承关系
什么时候定义继承?
A》is — a
以后我们在定义类的时候:
- 如果他们之间有A is a B,或者B is a A,则他们之间存在继承关系。
- 不要为了获取部分功能而使用继承关系
this和super
this代表当前的对象
super代表父类的对象。
this的使用
成员变量(实例变量,属性,全局变量(含静态变量))
this.x==》代表当前类的属性
this.f()==》代表成员方法
this()==》代表构造器
super的使用
super.x==》代表父类的属性
super.f()==》代表父类成员方法
super()==》代表父类构造器
多态:在具体情形下发生变化的现象
引用类型:
向上转型:是小类型转大类型,自动转换
向下转型:是大类型转小类型,强制转换
instanceof 用来检测引用的对象类型,避免出现类型转换异常。
多态的好处:
- 可扩展性
- 可维护性

浙公网安备 33010602011771号