面向对象的三大特性之封装与继承

面向对象的三大特性:封装、继承与多态。

封装:强调的是保护与易用

定义:对外屏蔽类内部的一些实现细节或属性,类的外部只能通过类提供的方法来操作类。

例子:自动挡汽车的自动挡就是一种封装,手动档汽车必须挂档等等操作,而在自动档里,档位封装了,不需要再明白怎么挂档,直接启动就可以了。

如何实现封装?

通过类结构以及访问修饰符来实现封装。访问修饰符的作用就是控制方法与属性只对哪些类可见。


四大访问修饰符:

private(私有权限,类内部可见)< default(包访问权限,包内部可见)<  protected (继承权限)< public (公开权限,所有对象可见)

一、 private访问修饰符

private 修饰属性,成为私有属性,仅在当前类内部可见。(使用private对属性进行封装操作)

 当属性被private封装后,类中需要提供getter与setter方法来控制私有属性,在该类外部时通过

getter  来取得私有属性

setter  来修改私有属性

上图是打印创立的getcardname与getbalance两个方法的语句,我们只看getbalance,通过card这个类创建一个新对象,在这个新对象里调用类中的刚创立好的getbalance方法,这样就完成了通过特定方法在类外部取得私有属性的操作。如果没有设立get方法,那么外部是无论如何也无法访问到private对象的,设立后,就为调用private属性设立了一个条件,满足才会执行,下图是getbalance具体代码。

 特别的

 二、包访问权限default(不需要在实际操作时把default写上,这是默认的)

什么是包?包就是文件夹。在操作系统中,同一个文件夹内不能存在同名文件(同名称同类型)。

java中使用package声明一个包,就是一个文件夹,来解决类名称重复的问题。

包的命名:全小写,多个单词之间用  - 分隔。

 java中产生一个包就在操作系统中对应产生一个文件夹。

若多个包下都存在同名的类,例如文件夹1里面有文件夹2和小笼包.java,文件夹2里又有文件夹3和小笼包.java,文件夹3里又有小笼包.java,那么此时,使用important关键字引入某个包下的某个类,相当于精准定位一个文件。在操作系统中,文件的全路径为文件绝对路径+文件名。

而类的全名称为:包名.类名

如果我们使用同一个包下的许多类

 我们可以使用通配符

但是如果都是用通配符

有可能产生这种情况,解决方法有两种

 

 还有一个静态导入

其实在我看来静态导入和未导入的区别无非就是不用写前缀了。 (上图中Math被省略)


继承:代码复用,增加整个程序的扩展性

父类中的属性是子类共有的,构造子类时,会先自动构造父类。 默认先调用父类的构造方法,然后再用子类的构造方法,构造完成。

语法

 

父类和子类的成员关系:

1 不存在同名属性和方法

 

上图中父类成员属性为 int a  与 int  b,而子类只有 int c

2  若存在同名属性和方法,则编译器的就近匹配原则会使用,先匹配子类的,没有再匹配父类的。

隐式继承:父类中存在private私有域时,子类在继承时,私有域是无法被使用的,这种继承就叫隐式继承。就相当于父类给了子类一张纸,上面打满了马赛克,虽然子类得到了,但是你看不到纸上写的究竟是啥。

 

父类和子类之间方法的调用:

和属性一样,优先匹配子类的方法,再匹配父类的,不过方法匹配要注意的是,方法需要注意方法名与参数,两者都匹配才能匹配。

 


super关键字:表示直接从父类中寻找成员变量或成员方法。上文中我们说编译器会就近匹配原则,而使用super就可以打破就近匹配原则。

super修饰成员属性,则直接寻找父类的成员属性

 super修饰普通成员方法,直接在父类中寻找同名方法。

 super修饰构造方法,表示显示在子类中调用父类的构造方法。

上文中说到,构造子类之前一定会先构造父类,如果父类中是无参构造,那么不需要写super语句来调用,如果不是,那么必须写上才能正常产生对象,且必须写在首行。

 

而当在使用父类继承时,一般不会调用this语句调用,因为this的调用也是要放在第一行的。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花落尽舞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值