目录
一、面向对象
1.面向对象介绍
代表语言 | 举例:洗衣服 | ||
面向对象 | C语言 | 自己事情自己干 | 自己亲力亲为,找盆,放水... |
面向过程 | Java语言 | 别人帮忙干 | 全自动洗衣机 |
面向对象优点:简化编写过程,减少代码量,只需要使用,不需要关心具体实现过程。
怎么使用面向对象思想编程:
a.new -> new完 . -> .代表是调用
b.特殊:如果调用的成员带static关键字,我们不需要new,直接类名.即可
2.类的介绍和定义
测试类:带main方法的类,主要运行代码
实体类:一类事物恶的抽象表示形式
组成部分
属性(成员变量)
a.定义位置:类中 方法外
b.作用范围:作用于当前类
c.定义格式:数据类型 变量名
d.默认值:整数:0 / 小数:0.0 / 字符:'\u0000' -> 对应int值为0 / 布尔:false / 引用:null
行为(成员方法)
只需把static去掉,其他与前面所学方法一样
3.对象的使用
a.导包:import 包名.类名
如果两个类在同一个包下,想要使用对方的成员不需要导包
如果两个类不在同一个包下,想要使用对方的成员需要导包
特殊包:java.lang -> 使用lang包下的类不需要导包 -> String
tip:学习四种权限修饰符前,尽量让两个类在同一个包下
b.创建对象
c.调用成员
4.匿名对象
常规对象类比变量
int i=10 | int:数据类型 | i:变量名 | 等号右边的10:真正的数据 |
Person p=new Person() | 等号左面的Person: 对象的类型 | p:对象名 | 等号右边的new Person(): 真正数据,是一个Person对象 |
匿名对象:没有等号左边部分,只有等号右边部分( new Xxxx().成员 )
注意:如果只单纯调用一个方法,让方法执行,可以考虑使用匿名对象,但如果涉及到赋值,千万不要使用匿名对象。
5.面向对象内存图
a.一个对像内存图
b.两个对象内存图
c.两个对象指向同一片空间内存图
6.成员变量和局部变量的区别
定义位置 重点 | 初始化值 重点 | 作用范围 重点 | 内存位置 了解 | 生命周期 了解 | |
成员变量 | 类中方法外 | 有默认值 不用手动赋值 可以直接用 | 作用于整个类 | 在堆中 跟着对象走 | 随对象的创建而产生 随对象消失而消失 |
局部变量 | 方法之中或 参数位置 | 无默认值 需要手动赋值才能用 | 只作用自己所在方法 其他方法无法使用 | 在栈中 跟着方法走 | 随着方法调用而产生 随着方法调用完毕而消失 |
7.MyDate类
MyDate类属于自定义类型(引用数据类型)
这种类型操作之前必须要赋值
即需要new‘对象赋值
MyDate birthday = new MyDate();
citizen.birthday.year = 2000 ;
二、封装
1.封装介绍
面向对象三大特征:[封装] 继承 多态
什么是封装思想:类比洗衣机,只需要知道按钮的作用,而不需要知道每个功能具体怎么实现,隐藏掉细节,只对外提供一个公共接口,提高系统的可扩展性,可维护性,安全性。
2.private关键字
问题:定义的成员变量,只要new新的对象,都可随便调用,不合理的调用也无法阻止
解决:将成员变量私有化,用 private 关键字修饰
修饰成员变量:private 数据类型 变量名
修饰方法:将public改成private,其他都一样
3.get&set方法
问题:属性被私有化了,外界直接调用不了,此时属性就不能直接赋值取值了,所以需要提供公共的接口get/set方法
set方法:为属性赋值
get方法:获取属性值
tips:可以在get/set方法里面加一些判断,用来验证数据是否合理。
private String name;
private int age;
public void setName(String xingMing){
name = xingMing;
}
public String getName(){
return name;
}
public void setAge(int nianLing){
age = nianLing;
}
public int getAge(){
return age;
}
4.this关键字
如果局部变量和成员变量重名时,默认“就近原则”,先访问局部变量。
this代表的是当前对象,区分重名的局部变量和成员变量
this点出来的一定时成员变量
//成员类
String name;
public void speak(String name){
System.out.println(name+"您好我是"+name);
}
//主类
Person p = new Person();
person.name = "wang";
person.speak("li");
//输出
li你好我是li
//成员类
String name;
public void speak(String name){
System.out.println(this.name+"您好我是"+name);
}
//主类
Person p = new Person();
person.name = "wang";
person.speak("li");
//输出
li你好我是wang
5.构造方法
构造方法:方法名和类名一致并且能初始化对象的方法,无返回值,void也没有
分类:无参构造/有参构造/满参构造
a.无参构造
格式:
public 类名(){
}
作用:new对象使用
特点:每个类中默认都有一个无参构造,不写也有,jvm会自动提供
使用:new对象就是在调用构造方法
b.有参构造
格式:
public 类名(形参){
为属性赋值
}
作用:new对象/为属性赋值
特点:jvm不会自动提供有参构造,但是将有参构造手写出来,jvm将不再提供无参构造,所以建议有参,无参构造都手写上去。
6.标准JavaBean
JavaBean是Java语言编写 类 的一种标准规范,符合JavaBean的类要求:
a.类必须是具体的(非抽象abstract)和公共的,public class 类名
b.并且具有无参数的构造方法,有参构造
c.成员变量私有化,并提供用来操作成员变量的set和get方法
分包分层
controller -> 专门放和页面打交道的类(表现层)
service -> 专门放业务处理的类(业务层)
pojo -> 专门放javabean类
utils -> 专门放工具类
7.快速生成JavaBean快捷键
Alt+Insert