继承、封装、多态、抽象类

封装:

隐藏实现细节,仅对外暴露公共的访问方式
将代码抽取到方法中,这是对代码的一种封装
将属性抽取到类当中,这是对数据的一种封装

封装常见的体现:

1、私有成员变量,提供setXxx和getXxx方法
2、将代码抽取到方法中,这是对代码的一种封装
3、将属性抽取到类当中,这是对数据的一种封装

封装的好处:

1、提高了代码的安全性
2、提高了代码的复用性封装的步骤

继承:

  1. 使用 private 关键字来修饰成员变量。
  2. 使用public修饰getter和setter方法。

继承

继承就是一个类A继承了另一个类B的所有成员,并且能够访问使用那些非私有成员。假如多个类中存在相同属性和行为时,我们可以将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。因此继承的一个很重要的意义就是能够减少代码的冗余

toString() 方法

一个类间接继承Object, 继承Object的toString(), 默认输出内容: “包名.类名@16进账的hashCode码”
如果我们直接使用System.out.println(对象); 输出的是对象的toString() 的内容

hashCode() 得到一个hash码
hash算法: 输入任意内容, 通过hash算法得到一个整数
内容不相等, 可能hashCode 一样, 如果两个对象相等, hashCode一样
但是hashCode相等,并不能确定这两个对象相等

equlas() 用于判断两个对象是否是同一个对象
java怎么判断这个两个对象时候是同一个对象:

  1. 先判断这两个对象的hashCode码是否一样? 如果不一样, 直接下一个结论: 这两个对象不是同一个对象
  2. 如果hashCode码一样, 接下来,还需要调用equlas() 来判断是否是同一个对象, 如果equlas()返回true, 表示这两个对象是同一个对象, 如果返回false,表示这两个对象不是同一个对象.

默认情况下: equlas() 判断是否是堆的同一块地址.
在实际开发中, 实体类,一般都会重写Object类hashCode与equals

抽象类:

一个类被abstract关键字修饰,那么这个类就是一个抽象类。一个抽象类可以含有或者不含有抽象方法。
抽象的含义是什么呢?抽象是一个隐藏实现细节并只向用户显示功能的过程。
我们可以将一个方法进行抽象,也可以将一个类进行抽象。
使用abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。

如果一个类包含抽象方法,那么该类必须是抽象类。注意:抽象类不一定有抽象方法,但是有抽象方法的类必须定义成抽象类。

多态:

在java中多态可以体现在方法上比如方法的重载,同名方法可以有不同的执行结果。多态也可以体现在面向对象中,一个对象可以使用多种类型进行表示。

多态就是:

同一个引用类型,使用不同的实例而执行不同操作。

多态好处:

  1. 解决代码复用
    ​ 2) 扩展性提高

多态实现前提条件:

  1. 有继承
  2. 有方法重写 不必需
  3. 父类引用指向子类对象 (父类引用 赋值的子类对象 )

多态: 迟绑定,动态绑定

​ 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值