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区分
重写(覆盖)和重载
重载:同一个类中,方法名相同方法参数不同,典型应用:无参构造和有参构造
重写:子类和父类同名的方法。
子类方法和父类方法同名,子类方法会覆盖父类方法,称为重写(覆盖),前提,子类方法访问权限必须大于或等于父类方法的访问权限
什么时候会用到覆盖?
案例:手机需要扩展新功能,反复修改代码会带来毁灭性的灾难。此时采用继承是不错的选择
后几篇结合题目具体讲解不懂可以看看