【无标题】

一、封装

封装的思想是你需要知道如何调用接口,就是隐藏对象内部的复杂性,只对外公开简单的接口。

1.封装的体现:

将类的一些信息隐藏在类的内部且不让外部程序直接访问,提供操作数据,这就是属性的封装性。

①属性的封装
②方法的封装
③构造函数的封装(单例模式)

2.封装的实现

属性的封装:使用private修饰符修饰成员变量,然后根据需求定义getter或setter方法。
方法的封装:有些方法仅仅只是在类的内部使用,不希望外部程序调用它,通过private修饰即可。
构造函数的封装:使用private修饰构造器,不让外部程序创建类对象,在类内部实例化对象,并提供公共接口。

3.封装的好处

①通过规定方法访问数据
②隐藏类数据的实现细节
③方便修改实现
④方便加入控制语句
⑤可以修改属性的读写权限

二、继承

“父与子之间的关系”

当多个类中存在相同属性和行为时,为了提高代码复用性,将这些相同的内容抽取到一个单独的类中,这些多个类无需再定义这些属性和行为,只要去继承那一个单独的类即可。
此处的多个类称为子类也就是派生类,单独的这个类称为父类|基类|超类。

Java中的类没有显示的继承任何类,则默认继承Object类
Object类是Java语言提供的根类,也就是说,一个对象与生俱来就有Object类当中的所有特征。

注意:

子类拥有父类的所有属性和方法!父类的私有属性和方法,子类是无法直接访到的,但是如果子类中公有的方法影响到了父类私有属性,那么私有属性是能够被子类使用到。
不能被继承的成员父类:构造方法,构造函数。
但是子类可以通过super()显示父类的构造函数。

继承规则

Java只支持单继承和多层继承,不允许多重继承
一个类可以被多个子类继承,一个类只能继承一个父类【直接父类】,使用extends关键字
子父类是相对的概念 子类直接继承的父类,称为直接父类;间接继承的父类称为间接父类。 子类继承父类以后,就获取了直接父类以及所有间接父类中的属性和方法

方法重写

在子类中,可以根据需要对从父类中继承来的方法进行方法重写。重写以后,当子类对象调用与父类的同名同参数的方法时,优先调用子类重写的方法。

要求:子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表;
子类重写的方法的返回值类型不能大于父类被重写方法的返回值类型。

1.父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型只能是void。
2.父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以使A类或A类的子类。
3.父类被重写的方法的返回值类型是基本数据类型(比如double),则子类重写的方法的返回值类型必须是相同的基本数据类型。

super关键字

1.super的三种语法格式:
super()或super(参数);访问父类属性
super.属性;访问父类方法
super.方法名()。

2.如果类里面有n个构造器,那么可以调用n-1次,至少1次是调父类的。

3.this()与super()不能同时出现,在构造器中,必须二选一,且只能出现在第一行。

super与this的区别

1.super()函数在子类构造函数中调用父类的构造函数时使用,而且必须要在构造函数的第一行。

2.this()函数调用本类中另一种形成的构造函数。this()只能用在构造函数中,并且也只能在第一行。

3.super()和this()都指的是对象,不能同时出现在构造函数里,只能二选一,均不可在static环境中使用。

4.super:引用当前对象的父类中的成员。语法格式:super.属性名/方法名()

5.this:代表当前对象名。
this是对象的隐藏属性 (本质就是一个普通的成员变量),this这个成员变量存储在堆内存中,该变量的值是所属对象在堆内存的地址。

6.this代表本类对象的引用,super代表父类的内存空间的标识。

三、多态

一个对象的编译类型和运行类型可以不一致。编译类型是在定义对象时,就确定了,不能改变;运行类型是可以变化的。

编译类型看定义时=左边,运行类型看=右边。

多态特点:可以调用父类中所有成员(需遵守访问权限),不能调用子类中特有成员;最终运行效果要看子类的具体实现。

当使用多态方式调用方法时,首先检查父类中是否有所调用的方法,如果没有,则编译错误;如果有,再去调用子类(运行类型)中的重写方法。

想调用子类中所有的成员,可以进行向下转型,语法:子类类型 引用名=(子类类型) 父类引用。一般推荐使用instanceof 去判断一下。

对象 instanceof 类名,用于判断对象的运行类型是否为××类型或××类型的子类型。

java动态绑定机制:当调用对象方法时,该方法会和对象的内存地址/运行内存绑定;调用属性时,没有绑定机制,哪里声明哪里使用。
对象类型转换:向上转型:父类引用指向子类对象,对象多态性;向下转型:子类引用指向父类对象,必须强转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值