1,封装
封装的含义:
一般意义的封装:例如将重复出现的代码抽取了一个函数, 称为代码的封装(包装)
面向对象语言中的封装: 将类中的某些信息,使用不同的访问权限修饰符隐藏起来,不让外界直接访问操作而是通过类中向外提供的特定的方法去访问操作,方便加入控制语句,主动权就在我们类自己手中
封装案例1:将类中成员变量私有化
封装案例2:将类中的方法私有化
Java中的封装是指将对象的状态(数据)和行为(函数)绑定在一起,并且仅对外公开一个访问接口。
封装的意义和好处:
这样做的目的是为了保护对象的状态,防止外部随意访问和修改对象的状态,确保数据的安全性和一致性。Java中的封装是指将对象的状态(数据)和行为(函数)绑定在一起,并且仅对外公开一个访问接口或者简单来说就是一个提供一个可以访问的方法。这样做的目的是为了保护对象的状态,防止外部随意访问和修改对象的状态,确保数据的安全性和一致性。
将类的构造方法封装
将类的构造方法私有化,在外界就不能随意的调用了
但是需要向外界提供获得此对象的方法
2,继承
继承的含义:
将同一类事物中共性的属性和行为进行抽取,定义在一个类中(即为基类)
其他类可以继承该类,继承之后就可以拥有基类中的功能
继承的语法:
通过 extends关键字,可以声明一个类B继承另外一个类A,定义格式如下
[修饰符]class 类A{
[修饰符】 class 类B extends 类A {
类B,称为子类/派生类
类A,称为父类/基类
例如:猫是动物,狗也是动物,那么我们就可以收取一个动物类,让猫和狗继承动物类
只要符合 is-a(什么是什么)关系,就可以使用继承
使用继承的好处:
继承的出现减少了代码冗余,提高了代码的复用性。 继承的出现,更有利于功能的扩展。 继承的出现让类与类之间产生了is-a的关系,为多态的使用提供了前提。
而且可以在子类中扩展子类自己特有的功能而不影响其他类
当多个类中存在相同属性和行为时,就将这些内容抽取放到单独的一个类中,
然后其他多个类中就不需要再定义这些属性和行为,
只需要和抽取出来的类构成继承关系就可以使用抽取出来的这个类的一些成员和方法。
注意:
java只支持单继承不支持多继承,即为:
一个类只能直接继承一个类,但是间接的可以继承多个类,
一个类如果没有显示的继承,则默认都继承了Object类
java.lang.Object类是java类体系最大的类,没有比它更大的了
继承中的构造方法:
子类继承父类时,不会继承父类的构造方法。只能通过“super(形参列表)的方式调用父类指定的构造方法。
规定super(形参列表),必须声明在构造器的首行。
如果在子类构造器的首行没有显示调用super(形参列表),则子类此构造器默认调用super(),即调用父类中空参的构造器
这么做是为了保证先对父类成员进行初始化。
开发中常见错误:
如果子类构造器中既未显式调用父类或本类的构造器,且父类中又没有空参的构造器,则编译出错。
3,方法的重写:
含义:
当一个类所继承的父类的方法的实现不满足了这个子类的需求时,可以在子类中对父类的方法进行重写也可以称为覆盖,这样调用的时候,就会调用子类中重写的方法
标记:
@override 是java中的一个注解标签,定义在重写的方法上,表示此方法是从父类重写而米的也可以不用添加,只要重写的方法结构与父类方法结构一致,也算正确的重写,但是建议保留
原因:1.编译器可以进行语言验证
2.阅读代码时,明确知道此方法是重写的.
注意:构造方法,静态方法不能重写,成员变量不存在重写
方法重写和方法重载的区别:
方法重写是子类继承父类之后,父类的某些方法不适用于子类时,将父类上的某个方法拿出来在子类中
重写再写一次,那么再次调用这个子类的这个方法时,调用的就是这个重写过的这个方法了
方法重载是在一个类中有多个相同名字的方法但参数不同 参数不同有三个方面:
数量不同 类型不同 顺序不同 并且调用时,会根据不同的参数表选择对应的方法
4,super关键字
在Java类中使用super来调用父类中的指定操作:
super可用于访问父类中定义的属性
super可用于调用父类中定义的成员方法
super可用于在子类构造器中调用父类的构造器
注意:
尤其当子父类出现同名成员时,可以用super表明调用的是父类中的成员super的追溯不仅限于直接父类还可以是父类的父类super和this的用法相像,this代表本类对象的引用,super代表父类的内存空间的标识
误区:不要把super误认为是父类对象,在创建子类对象时,不会创建父类对象只会将父类中的信息加载到子类对象中存储