封装&继承&多态

一、封装

**1、概念: **

​ 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

2、好处:

​ 只能通过规定的方法访问数据。隐藏类的实例细节,方便修改和实现。

3、实现步骤:

​ 修改属性的可见性(设为private)创建getter/setter方法(用户属性的读写)在getter/setter方法中加入属性的控制语句(对属性值的合法性进行判断)

二、继承

1、继承的概念

​ 继承是类与类的一种关系,是一种“is a”的关系。

​ java中的继承是一种单继承,一个类只有一个父类。

2、继承的好处

​ 子类拥有父类的所有属性和方法(除了private修饰的属性不能拥有)从而实现了实现代码的复用;

3、特点

​ 单继承私有修饰符修饰不允许被继承,构造方法也不允许被继承子类的构造方法第一条代码(被省略),默认调用父类无参构造 – 先有父,再有子父类声明 子类实现(向上转型☆☆☆☆☆)所有的类都有一个直接或间接父类-Object

A、方法的重写  子类如果对继承的父类的方法不满意(不适合),可以自己编写继承的方法,这种方式就称为方法的重写。当调用方法时会优先调用子类的方法。

重写要注意:

a、返回值类型

b、方法名

c、参数类型及个数 都要与父类继承的方法相同,才叫方法的重写。

instanceof 判断是否由某个类进行实例化

重载和重写的区别:

方法重载:在同一个类中处理不同数据的多个相同方法名的多态手段。

方法重写:相对继承而言,子类中对父类已经存在的方法进行区别化的修改。

B、继承的初始化顺序

1、初始化父类再初始化子类

2、先执行初始化对象中属性,再执行构造方法中的初始化。

基于上面两点,我们就知道实例化一个子类,java程序的执行顺序是:

父类对象属性初始化---->父类对象构造方法---->子类对象属性初始化—>子类对象构造方法

C、final关键字

使用final关键字做标识有“最终的”含义。

  1. final 修饰类,则该类不允许被继承。

  2. final 修饰方法,则该方法不允许被覆盖(重写)

  3. final 修饰属性,属性必须初始化,或在构造方法中赋值(但只能选其一,且必须选其一,因为没有默认值)。

  4. final 修饰变量,则该变量的值只能赋一次值,在声明变量的时候才能赋值,即变为常量

D、super关键字

在对象的内部使用,可以代表父类对象。

1、访问父类的属性:super.age

2、访问父类的方法:super.eat()

super的应用:

首先我们知道子类的构造的过程当中必须调用父类的构造方法。其实这个过程已经隐式地使用了我们的super关键字。

这是因为如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法。

那么如果自己用super关键字在子类里调用父类的构造方法,则必须在子类的构造方法中的第一行

this关键字

this表示一个对象的引用,它指向正在执行方法的对象. 特别的, 在构造方法中,通过this关键字调用其他构造方法时,必须放在第一行,否则编译器会报错. 且在构造方法中, 只能通过this调用一次其他构造方法.

三、多态

​ 多态就是对象的多种形态。

​ 实现多态的三个条件(前提条件,向上转型、向下转型)

​ 1、继承的存在(继承是多态的基础,没有继承就没有多态)。

​ 2、子类重写父类的方法。(多态下会调用子类重写后的方法)。

​ 3、父类引用变量指向子类对象。(涉及子类到父类的类型转换)。
​ 多态的表现形式

​ 1、方法的重载:通常是指在同一个类中,相同的方法名对应着不同的方法实现,这些方法名相同的方法其区别在于他们的参数 不同;

​ 2、方法的重写:方法的重写主要用于父类和子类之间,子类重写父类的方法,只是对应的方法实现不同,方法名和方法参数都 相同;

​ 3、抽象类:在面向对象语言中,一个类中的方法只给出了标准,而没有给出具体的方法实现,这样的类就是抽象类。例如父类 就可以是抽象类,抽象类是不能被实例化的类;

​ 4、接口:在多态机制中,接口比抽象类使用起来更加方便。而抽象类组成的集合就是接口。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值