Day13 面向对象进阶(接Day12)
一、private - 私有化
2 1、含义:私有化
2、理解:private是访问修饰符的一种,访问修饰符规定了访问权限
3、作用:
3.1. 修饰属性:私有化属性,不能让外界使用
3.2.修饰方法:私有化方法,不能让外界使用
4、应用场景:不让让外界访问的属性和方法就用private修饰
二、封装
1、步骤:
1.1. 私有化属性
1.2. 添加get(获取)/set(设置)方法
2、好处:外界不可以直接操作属性,必须通过get、set方法操作,可以在get、set方法中做额外的功能
3、思考:操作属性有什么功能?
3.1.设置属性 – set
3.2.获取属性 – get
4、需求:模拟银行用户操作余额的功能
4.1分析:
操作余额(存钱、取钱、查看)
import java.time.LocalDateTime; public class Test01 { public static void main(String[] args) { User user = new User("1445584980", "123123", "小杨", "15879090131", '男', 2000); //存钱 //user.surplus = user.surplus+200; user.setSurplus(user.getSurplus() + 200); //取钱 //user.surplus = user.surplus-1800; user.setSurplus(user.getSurplus() -1800); //查看 //System.out.println(user.surplus);//400.0 System.out.println(user.getSurplus());//400.0 } } class User { String username; String password; String name; String phone; char sex; private double surplus;//余额 public User() { } public User(String username, String password, String name, String phone, char sex, double surplus) { this.username = username; this.password = password; this.name = name; this.phone = phone; this.sex = sex; this.surplus = surplus; } //设置余额 public void setSurplus(double surplus){ //额外的功能 double num = (surplus - this.surplus); System.out.println(LocalDateTime.now() + " -- " + this.name + "用户操作了金额:" + ((num>0)?"+":"") + num); //设置属性 this.surplus = surplus; } //获取余额 public double getSurplus(){ //额外的功能 System.out.println(LocalDateTime.now() + " -- " + this.name + "用户获取了金额"); //返回余额 return surplus; } }
三、this - 本对象
1、含义:代表本对象,this出现方法里,表示调用该方法的对象
2、理解:哪个对象调用该方法,该方法里的this就表示该对象
3、作用:
3.1. this.属性:调用本对象的成员变量
3.2. this.方法:调用本对象的成员方法
3.3. this():调用本对象的构造方法(在一个构造方法中的第一句调用另外一个构造方法)
四、分包
基本作用:防止了类的重名问题
项目作用:项目中有众多的类,把相同功能的类放在同一个包中,方便管理
工具类:com.dream.util/tool
实体类:com.dream.vo/bean/entity/bto/pojo
数据库类:com.dream.dao/mapper
五、static - 静态的
作用:
- 修饰属性
类加载到方法区时,JVM会扫描该类的所有属性
并把静态属性加载到静态区中,静态属性属于类属性,
该类所有的对象都共享该属性
静态属性直到项目结束时才会被回收
- 修饰方法
属于类方法,直接用类名调用
应用场景:工具类
- 静态代码块
静态代码块是类加载到方法区时才会被调用,该代码块只能初始化静态变量
代码块是创建对象时优先于构造方法调用,该代码块可以初始化成员变量和静态变量
构造方法是创建对象时调用,该方法可以初始化成员变量和静态变量
4、成员变量 vs 静态变量成员变量:属于对象的变量,每个对象独享一份
静态变量:属于类的变量,每个对象都共享一份
注意:
1.成员属性:每个对象独享一份
2.静态属性:每个对象共享一份
3.静态属性何时创建?
使用到类,JVM会判断方法区中是否有该类的class文件,如果没有,就把该类的class文件加载到方法区。JVM会扫描该类的所有属性,并把属性添加到静态区中(1.开辟空间 2.赋系统的默认值)
4.静态属性何时销毁?
项目结束时,静态属性才会被销毁,所以静态属性的生命周期很长,项目中使用时需警慎
5.静态属性的应用场景?
该类所有的对象需要共享的属性,就可以设置为静态
static属性内存图