封装---继承

构造代码块 局部代码块

构造代码块:
作用:
将所有构造方法中通用的代码提取到构造代码块中;
每次调用构造方法去创建对象时,构造代码都会执行一次;
通常使用构造代码块来完成所有构造方法都要给属性赋值的操作
优点:提高了代码的复用性
格式:
{
代码块;
}
位置:
类中方法外 规范要求 构造代码块在属性下边 方法上边
执行:
当创建对象时,会调用一次构造代码块先进行属性的初始化赋值;再调用构造方法完成对象的创建;

	创建一个对象只会调用一次构造代码块,且因为构造代码块没有名称等,所有无法通过其他方式再次调用,不能再手动调用;

局部代码块:
位置:方法内 结构语句内部等
作用:限制局部变量的生命周期,提高内存的利用率
当局部代码块结束时,定义在局部代码块中的局部变量也会随之消亡
格式:
{
代码块;
}

匿名对象

概念:
创建对象时没有指定对象名
格式:new 类名([参数列表]);
例如:
new Person().eat();
使用方式:
匿名对象.方法名();
匿名对象.属性名;//获取属性值
匿名对象.属性名 = 值;//不常用
匿名对象作为方法的参数( p.lyb(new Person(“大白”,18));)

注意:
	匿名对象因为创建之后没有定义变量存储该对象的地址值,所以该对象只能使用一次;之后就拿不到该对象;
	通过匿名方式创建多个对象,这些对象地址值都不相同,是不同对象;

方法:
方法的参数 方法的返回值能不能是一个自定义的类?
可以 类是引用数据类型
项目中使用的参数和返回值大部分都是自定义的类

面向对象三大特征–封装

三大特征:
封装 继承 多态
封装:
1、类-将一类事物共有的特征和行为抽象成一个类;该类就封装了这一类事物的特征和行为;
2、方法-将实现功能的逻辑封装在方法中 需要使用时直接调用即可 无需关注具体实现逻辑
3、属性私有化–属性就只能在当前类的内部访问
private私有权限修饰符 来修饰属性
将类中属性私有化 提供对该属性公开的getter/setter
如果类中有大量属性需要提供对应的getter/setter方法则可以通过开发工具直接生成
右键-》Generate->Getters and Setters->选中需要生成的属性即可
封装的优点:
1、封装成类 方便项目结构的构建
2、提高安全性,提高代码的复用性

面向对象三大特征–继承

父类
将多个类中共有的属性和方法的代码提取到另一个单独的类中,就将提取出来的这个新的类称之为父类
基类 超类
子类:
原有的这些类就称之为子类;子类通过继承父类,可以将父类中的属性和方法直接继承过来;
派生类
格式:
权限修饰符 class 子类 extends 父类{}
注意:
1、父类所有的属性和方法都会被子类继承,但是父类中通过private修饰的属性在子类中或者其他类不可见
2、子类继承父类,当创建子类对象时会先创建父类对象
3、父类的构造方法子类不能继承
4、子类中除了从父类继承过来的共有的属性和方法之外,也可以增加自己特有的属性和方法
方法重写:Override
子父类之间,当子类继承了父类的方法,但是发现该方法不满足自己的功能需求,则可以在子类中重新实现该方法;
特点:
方法名和参数列表完全一致的方法
方法签名:方法名和参数列表
注意:
当子类重写了父类的方法,通过子类对象调用重写的方法,则调用的是子类重写之后的方法;
父类中私有的方法子类不能重写,但是子类中允许存在一个和该方法的方法签名完全一致的方法,可以把这个方法理解成子类自己的普通方法

单继承、多继承:
Java是单继承 ,Java可以多重继承
多继承:一个类继承多个父类
各有优势:
单继承:安全 调用方法是非常明确;不够灵活
多继承:可以同时继承多个父类中的多个内容 比较灵活;当父类中存在同样的方法 时,子类无法确定调用时;
子类继承父类之后,创建子类对象时会先创建父类对象
在子类的构造方法中 首行默认包含一行super();语句
如果父类中没有无参构造,则子类就会报错;可以在子类中通过super调用对应的有参构造来解决问题

五大原则:两小两等一大
两等:
1、方法签名要一致
2、父类中方法如果返回值的类型为void 基本数据类型,则子类重写的方法返回值类型也必须一致;
两小:
3、父类中方法如果返回值为引用数据类型则子类重写的方法返回值类型也必须小于或者等于父类的返回值类型
4、父类中方法如果抛出了异常,则子类重写的方法抛出的异常要小于或者等于父类异常的类型
一大:
5、子类重写的方法的权限修饰符必须大于等于父类的权限修饰符

方法重载和方法重写的区别:
方法重载:
方法名相同 参数列表不同
在同一个类中
Overload
方法重写:
方法名相同 参数列表也相同
基于父子类的继承关系
Override
继承的优点:
提高了代码的复用性

super

super:关键字 父类的对象
使用场景:
调用属性
super.属性名
例如:
super.height
调用方法
super.方法名();
例如:
super.eat();
super语句:
子类构造方法中可以通过super语句来调用父类的构造方法
super语句必须在首行 否则编译报错

权限修饰符

概念:
用于权限控制的,不可见;
分类:
public protected 默认 private
public:公共的
protected :被保护的
默认:在属性或方法前没写权限修饰符 则为默认
private:私有的
本类 同包类 子类 全局
private √
默认 √ √
protected √ √ √
public √ √ √ √

外部类只能通过public 和 默认来修饰 其他不行编译报错

this关键字 super关键字
this当前对象 super父类对象
this调用属性 方法 super调用父类的属性和方法
this语句可以调用当前对象的其他构造方法
super语句可以调用父类构造方法
this语句和super语句都需要放在第一行
this语句和super语句不能同时使用

猜你喜欢

转载自blog.csdn.net/weixin_49459707/article/details/108911818