Java学习回忆录-基础语法-008
对象
创建对象的方法:数据类型 对象名 = new 数据类型(参数)
通过new 创建对象. 创建的对象,就是用于表示生活是在的一个个体事物.
new Phone() -> 这一个对象,就表示生活中一个具体的手机
new Student(); ->这是对象,就表示生活中一个具体的学生.
对象的操作:
创建对象:类名 对象名=new 类名();
操作对象:给对象的属性赋值,对象名.属性名=值;
取出对象的属性值,syso(对象名.属性名)
执行对象的方法,对象名.成员方法();
对象的内存分析
一个对象内存
两个对象的内存.
两个对象指向同一个内存。
类
java通过代码,通过面向对象的思想,可以将这些事物,给信息化(在计算机中描述和表现出来)
java 中是通过类(class) 来描述生活事物的. 通过对象来表示一个具体的事物.
案例:
使用java代码,将上述的汽车,手机,学生,描述出来(信息化,在计算机中表示出来)
汽车:
第一步:
新建一个类, 这类的名字,叫做汽车.(Car)
第二步:
给这个类,添加属性和行为.
属性在代码->成员变量
行为在代码->成员方法
String name=“jack”; // 定义了一个变量,变量是String 类型的,这个变量的名字叫做name ,存储的数据是"jack"
int age=20;
创建一个类:
格式: 类名 对象名 = new 类名(参数);
封装
private 关键字
-
用于修饰成员变量。
成员变量私有,外部不能在访问了.
对外隐藏属性,提高安全性的一种方式。
对外隐藏类的属性,(不允许外部随意的访问,禁止在外部随意的赋值(获得非法数据). )
如果不对外隐藏,外部可以任意的方位属性,修改属性值(任意的给值,出现非法数据),获取属性值。 -
提供共有的get和set 方法.
使用 private修饰了成员变量,将其隐藏,不再对外暴漏了。但是,外部有需要正常的给属性赋值或者取值。-
成员变量私有
使用private 修饰成员变量. -
提供公有的get 方法
获取到属性的值,特殊需要可以不提供这样的get方法,这样在类的外部,就隐藏. -
提供公有的set 方法
修改属性值的方法, 特殊的需求,可以不提供这样的set 方法, 这样在类的外部,就无法直接修改属性值.
可以在set 方法, 加入逻辑判断,过滤非法数据.
提高程序的数据的安全性
设置属性值. public void setXXX(数据类型 x){ 成员变量=x; } 取出属性值 public 数据类型 getXxx(){ return 值; }
好处:
提高了安全性.
(对象数据的安全性) -
this关键字
作用:用来解决局部变量和成员变量重名的问题
在一个方法中:如果没有this则使用局部的,如果有则使用成员的。
概述:代表本类当前对象的引用。(谁调用,this就代表谁)
public void GetWidth(int Width){
this.Width = Width; // 在这个方法中,把长方形的宽赋值进来,
// 左边的Width因为有This关键字,所以使用的是成员变量,而右边的Width没有this,则使用的局部参数
}
public int GetArea(){ // 求长方形
return(Length * Width); // 假设定义了两个长方形,
// 第一个长方形 Ar1 调用这个方法的时,里面的Length和Width就是Ar1.Length和Ar1.Width
// 第二个长方形Ar2 调用这个方法时,,里面的Length和Width就是Ar2.Length和Ar2.Width
}
构造方法
1. 作用:
用于给对象初始化的方法. 构造方法.
初始化对象的什么:一般对象都有属性, 构造方法就是用于初始化对象的属性的。
2. 特点:
1. 构造方法和类名相同。
2. 构造方法没有返回值类型;
3. 连void 都没有的;
4. 构造方法没有返回值。
3. 构造方法的注意
-
一个类中可以有多个构造方法。是以重载的形式存在的。
-
定义一个类时,如果没有编写构造方法,系统会提供一个默认的无参数构造。
-
如果编写了构造方法,系统就不再提供默认的无参数构造。
-
自定义类时,建议将无参数构造写上。
举例代码:
class Person{ // 定义一个“人”的类
private String name; // 定义两个私有属性,同时提供get和set方法
private int age;
Person(){ // 无参构造
}
Person(String name){ // 重载的有参构造
this.name=name;
}
Person(int age){ // 重载的有参构造
this.age=age;
}
Person(String name ,int age){ // 重载的有参构造
this.name=name;
this.age=age;
}
// set 和get 方法,此处省略
}
// 创建对象时, 可以利用构造函数给对象初始化.
//1. 无参数构造创建并初始化对象.
Person p1=new Person();
//2. 使用有参数构造创建初始化对象.
Person p2=new Person("jack");
//3. 使用有参数构造创建初始化对象
Person p3=new Person(20);
//4. 使用有参数构造创建初始化对象.
Person p4=new Person("jack",30);