Day 12 封装

发布于:2023-01-20 ⋅ 阅读:(8) ⋅ 点赞:(0) ⋅ 评论:(0)

面向对象的三大特征

  • 封装
  • 继承
  • 多态

什么是封装

private 关键字 ----->封装

如果学生的年龄,手机价格,赋值的时候可以随便赋值,可能出现非法数据"负数

以后:描述事务的时候,需要定义类,类中的所有的成员变量(现实世界事物的属性) ,必须都是私有化private;

封装

* 就是将显示世界事物的属性隐藏了(加入一个关键字private),

* 私有的,无法直接访问的,对外数据的安全性!(外界不能访问的)

* 对外提供一个方法,公共的(public)访问方法(setXXX()/getXXX())

注意事项:

以后在书写的代码的时候,写一个类,描述真是存在事物的属性的时候,

需要属性(英文单词字母全部小写)全部加入private

一个类中的成员变量需要对外隐藏,被private修饰,为了保证数据安全性,对外提供公共的getXXX()/setXXX() 方法 访问

局部变量和成员变量

  1. 位置不同
    • 局部变量—方法内
    • 成员变量—类中方法外
  2. 储存位置不同
    • 局部变量----储存在栈内存中
    • 成员变量----储存在堆内存中
  3. 生命周期不同
    • 局部变量—随着方法的调用,方法结束消失
    • 成员变量—和对象生死共存
  4. 初始化不同
    • 局部变量-----不需要初始化
    • 成员变量-----需要初始化,如果没有赋值,则会通过类型默认赋值

this关键字

this:代表当前地址值的引用

Student s = new Student(); s------>空间地址值的引用

this的出现是为了防止局部变量隐藏成员变量

this的用法

this.变量名 变量名:访问本类的成员变量

this.方法名 访问本类的成员方法

什么是匿名对象

格式 new 类名();

  1. 匿名对象可以作为参数传递
  2. 匿名对象可以节省空间,因为压根没有栈内存空间,不需要开辟,直接开辟堆内存
  3. 匿名对象一般适用于一次即可,使用完毕,直接被jvm的GC(垃圾回收器)的回收
class StudentTest{
	public static void main(String[] args){
	//匿名对象:
	//需求:访问StudentDemo类的method方法
		new StudentDemo().method(new Student()) ;
	}
}

方法形式参数(引用类型)

​ ----如果方法的形式参数是类,实际参数传递,需要传递的是当前类的实例类对象

class StudentTest{
public static void main(String[] args){
//补全代码: 需求:访问StudentDemo类的method方法
//创建StudentDemo类对象
//有名字对象
StudentDemo sd = new StudentDemo() ;
//new 一个具体的学生
Student s = new Student() ;
sd.method(s) ;//实际参数
}
}
class Student{
public void study(){
System.out.println("Good good stduy ,Day day up!!!") ;
}
}
class StudentDemo{
public void method(Stduent s){ //形式参数:引用类型:Student类型
s.study() ;
}

构造方法的特点以及注意事项

特点

  1. 方法名和类名相同
  2. 没有具体返回值
  3. 没有void

目的

目的就是为了给类成员初始化

注意事项

  1. 如果一个类中没有无参构造方法,会默认给出
  2. 提供一个有参构造方法,就不会默认给出无参构造方法,所以建议每次先给出无参
  3. 构造方法可以重载