1.面向对象
1.1概述
1.2面向对象和面向过程
面向过程 : 侧重分步骤,需要考虑完成该功能的过程,第一步做什么,第二步做什么....
面向对象 : 侧重分模块
总结 :
面向有对象优势 : 可扩展性,可维护性,灵活性,使程序耦合度降低
缺点 : 性能比面向过程相对较差
1.3构造方法
1.4类和对象
1.5 对象使用
1.6 Bean
就是公共的类,私有化的属性,公共的获取属性的方法(getter/setter),公共的无参构造
public class User {
// 用户名
private String username;
// 密码
private String password;
// 昵称
private String nickname;
// 构造方法
public User() {
}
public User(String username, String password) {
// 有参构造 用于创建对象时 初始化成员变量的值
this.username = username;
this.password = password;
}
public User(String username, String password, String nickname) {
// 全参构造
this.username = username;
this.password = password;
this.nickname = nickname;
}
// getters and setters 用来获取和修改私有化成员变量的
public void setUsername(String username) {
// 成员方法中可以直接访问成员属性
// this 就是 当前对象,谁调用这个方法,this就是谁
if (username == "123") {
username = "缺心眼子";
}
this.username = username;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
}
1.7实例化
* 实例化 : 就是值创建一个类的对象(实例)
*
* User user = new User();
*
* new 会去堆内存开辟一个内存空间,用于保存成员属性
*
* 调用构造方法(栈内存压栈),对堆内存数据进行初始化赋值,如果没有传入数据,则赋予默认值
*
* 构造方法执行完后,弹栈,并把堆内存地址返回给调用处,赋值给变量user
* 1 加载客户端类(OOP_05)
*
* 2 调用客户端类main方法
*
* 3 加载服务端类(User)
*
* 4 调用User的构造方法
*
* 5 堆内存创建空间,并对成员属性进行初始化
*
* 6 构造方法弹栈,并把内存地址赋值给变量
1.8常见异常
User user = new User("admin", "root");
user = null;
// 一种是编译时异常
// 一种是运行时异常
// java.lang.NullPointerException 空指针异常, 是运行时异常
// 使用null 访问成员属性,就会出现空指针异常
System.out.println(user.getUsername());
1.9对象调用静态属性
static int a = 22;
int b = 33;
public static void main(String[] args) {
int a = 1;
OOP_07 o = new OOP_07();
System.out.println(o.b);
o = null;
// 可以通过对象调用静态属性
// 调用静态变量,因为在编译时,会自动把o换成对应的类名去调用
System.out.println(o.a);
// 调用静态变量
System.out.println(OOP_07.a);
// 调用局部变量
System.out.println(a);
}
1.10 注释事项
1.10.1静态调用成员
1.10.2 传值和传引用
同数组