Java什么是封装

1.封装

1.类有成员属性和方法两个部分组成,二者都可以供其它类去调用。方法作为一个功能的实现,被调用时不会产生什么问题,属性却不一样,它是属于类和对象的,容易被“非法篡改”。

例如:定义一个类people,有姓名和财产等属性,默认值是:张三和12000.有show方法,输出姓名和财产。定义一个测试类,修改张三的money为-10000;

2.此案例可以看出类和对象的属性毫无隐蔽性可言,可以被随意修改,这样设计出的程序会有很大的安全性问题。

3.为了解决这个问题,java开发者提出了封装的思想。将类的成员属性的访问修饰符规定为私有(private),这样该属性在其它类就不能调用,更不可能被修改。这相当于闭关锁国政策,所以又面临一个问题:连成员属性的正常赋值也不可能在其它类中实现。因此设计者们再次提出了一个方案:成员属性可以间接地在其它类中被访问,也就是中间要设置一道检查和过滤的关卡,这道关卡就是get和set方法,它们被称为getter和setter.

下面我们对刚才的案例进行改进。

实现封装总结:

1.属性访问修饰符定义为私有:private
2.对外提供get和set方法。

2.包结构

在开发大型项目时,会有很多功能模块的具体划分,这是需要建立很多的类,将同一层级的类放在一个包中,可使程序的层级结构清晰,提高辨识度。
类似于在资源管理器中新建一个文件夹,有规律的存放和管理资源文件。

导包:导入自己的包和系统包
java.lang包是java语言的核心,它提供了java中的基础类。(java.lang这个包属于系统包,该包中的类不用导入,例如System,String)

3.访问修饰符

下图中:受保护的情况(protected) :子类必须在同一个包中。

1.类的访问修饰符:

Public:对外公开
默认:所在包有效,包以外不能访问 --体现在构造方法上

2.成员访问修饰符(成员属性和成员方法)

Public:对外公开
Protected:受保护的,同一个包的子类可以访问。
默认:同一个包中可以访问
Private:只在当前类有效

4.static和this关键字

Static修饰的,属于类范围的,this代表当前对象。
Static修饰成员属性和方法和代码块

5.继承

如何理解继承,我猜大家首先想到的可能是继承千万家产,走上人生巅峰。梦想是美好的,java里面却不是这样的。
Java中的继承需要从两个方面去理解:

1.在多个子类中抽取出相同的属性和方法,形成父类的属性和方法

例如:大象和狮子 具有相同的属性,名称,体重,战斗力。可以提取这些相同的属性,形成一个父类 动物。

2.对父类成员的继承使用(包含成员属性和成员方法)

抽取出共有的重复的代码,使用继承,提高代码的复用性,

让类与类之间产生关系:extends

继承是两个类之间产生关联关系的唯一的方式

子类构造方法会默认调用父类构造方法。

为多态提供了前提

Java中支持单继承:一个子类只能有一个直接父类

Java中不支持多继承

6.this和super的区别

this:

1.本类成员方法中,访问本类成员变量,访问本类另一个成员方法

2.本类构造方法中,访问本类另一个构造方法

Super:

1.在子类成员方法中,访问父类成员变量和成员方法

2.在子类构造方法中,访问父类构造方法

本类的成员变量和局部变量重名,用this区分,
本类的成员变量和父类的变量重名,用super区分

重写(覆盖)和重载

重载:同一个类中,方法名相同方法参数不同,典型应用:无参构造和有参构造

重写:子类和父类同名的方法。

子类方法和父类方法同名,子类方法会覆盖父类方法,称为重写(覆盖),前提,子类方法访问权限必须大于或等于父类方法的访问权限

什么时候会用到覆盖?

案例:手机需要扩展新功能,反复修改代码会带来毁灭性的灾难。此时采用继承是不错的选择

后几篇结合题目具体讲解不懂可以看看

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值