面向对象的三大特征
- 封装
- 继承
- 多态
什么是封装
private 关键字 ----->封装
如果学生的年龄,手机价格,赋值的时候可以随便赋值,可能出现非法数据"负数
以后:描述事务的时候,需要定义类,类中的所有的成员变量(现实世界事物的属性) ,必须都是私有化private;
封装
* 就是将显示世界事物的属性隐藏了(加入一个关键字private),
* 私有的,无法直接访问的,对外数据的安全性!(外界不能访问的)
* 对外提供一个方法,公共的(public)访问方法(setXXX()/getXXX())
注意事项:
以后在书写的代码的时候,写一个类,描述真是存在事物的属性的时候,
需要属性(英文单词字母全部小写)全部加入private
一个类中的成员变量需要对外隐藏,被private修饰,为了保证数据安全性,对外提供公共的getXXX()/setXXX() 方法 访问
局部变量和成员变量
- 位置不同
- 局部变量—方法内
- 成员变量—类中方法外
- 储存位置不同
- 局部变量----储存在栈内存中
- 成员变量----储存在堆内存中
- 生命周期不同
- 局部变量—随着方法的调用,方法结束消失
- 成员变量—和对象生死共存
- 初始化不同
- 局部变量-----不需要初始化
- 成员变量-----需要初始化,如果没有赋值,则会通过类型默认赋值
this关键字
this:代表当前地址值的引用
Student s = new Student(); s------>空间地址值的引用
this的出现是为了防止局部变量隐藏成员变量
this的用法
this.变量名 变量名:访问本类的成员变量
this.方法名 访问本类的成员方法
什么是匿名对象
格式 new 类名();
- 匿名对象可以作为参数传递
- 匿名对象可以节省空间,因为压根没有栈内存空间,不需要开辟,直接开辟堆内存
- 匿名对象一般适用于一次即可,使用完毕,直接被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() ;
}
构造方法的特点以及注意事项
特点
- 方法名和类名相同
- 没有具体返回值
- 没有void
目的
目的就是为了给类成员初始化
注意事项
- 如果一个类中没有无参构造方法,会默认给出
- 提供一个有参构造方法,就不会默认给出无参构造方法,所以建议每次先给出无参
- 构造方法可以重载