package com.sf.ioc.simple; // 面向对象 // 类里面有什么 (成员) // 属性(变量 基础数据类型 or 引用数据类型) // 行为(方法/函数 方法名 + 形参「构成重载」 返回类型 return) // 一定是被类或者对象调用 static修饰的被类调用 其他都是被对象调用的 // 先有类后有对象 静态的只能调用静态的 非静态的都可以调用 // 类或者属性或者方法 不想被修改的时候 通过final修饰 // 类被修改 叫做继承 方法被修改 叫做重写 属性被修改 叫做赋值 // 构造器(特殊的方法) new调用的 new出来的对象 放在了“堆”中 // “栈”和“堆” 一个相对较小 一个相对较大 // 所谓的垃圾回收 是把放在堆中的对象 不再使用的识别为垃圾 进行回收 // 无参构造器 和 有参构造器(全参构造器) // A类继承B类的时候 new A() 会默认调用父类的构造器 // 代码块 只能被static修饰 变成静态代码块 非静态代码块 其实就是所有构造器中重复逻辑的抽离 // 所以也叫初始化块 父类有静态代码块 非静态代码块 构造器 子类有静态代码块 非静态代码块 构造器 // 内部类 // 封装 private String name; get和set方法 JavaBean // 属性和方法 // 多态 instanceof 在继承的情况下 A extends B; B b = new A(); // 在接口实现的情况下 C implements D; D d = new C(); // b instanceof A // d instanceof C // Object类 // hashCode() equals() toString() public class User { // 修改类结构的时候 // 声明属性 添加get set 添加全参构造器 重写toString private String name; private String desc; // User类有一个属性 Role类的对象 // zhangsan "admin" private Role role; // Auth类的对象 // zhangsan "CRUD" private Auth auth; { // System.out.println("User"); } public User() { System.out.println("User"); // this.name = "name"; } public User(String name) { System.out.println("User by name"); this.name = name; } /** * * * * * * @param name * @param desc */ public User(String name, String desc) { System.out.println("User by name and desc"); this.name = name; this.desc = desc; } public User(String name, String desc, Role role) { this.name = name; this.desc = desc; this.role = role; } // public User(String desc, Role role, String name) { // this.name = name; // this.desc = desc; // this.role = role; // } public User(String name, String desc, Role role, Auth auth) { this.name = name; this.desc = desc; this.role = role; this.auth = auth; } public Role getRole() { return role; } public void setRole(Role role) { System.out.println("User setRole "); this.role = role; } public String getName() { return name; } public void setName(String name) { System.out.println("User setName "); this.name = name; } public String getDesc() { return desc; } public void setDesc(String desc) { System.out.println("User setDesc "); this.desc = desc; } public Auth getAuth() { return auth; } public void setAuth(Auth auth) { System.out.println("User setAuth "); this.auth = auth; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", desc='" + desc + '\'' + ", role=" + role + ", auth=" + auth + '}'; } }