面向对象基础
1. 类和对象
定义
类:是对现实生活中一类具有共同属性和行为的事务的抽象
属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值
对象:能够看得到摸得着的真实存在的实体
行为:对象能够执行的操作
类是对象的抽象
对象是类的实体
类的定义步骤: (Class)
- 定义类
- 编写类的成员变量
- 编写类的成员方法
对象的使用
new出来的东西在堆内存
//使用成员变量
p.brand=”HUAWEI”;
p.price=2999;
System.out.println(p.brand);
System.out.println(p.price);
//使用成员方法
p.call();
p.sendMessage();
例子:学生
在同一个目录下,在main中调用
2. 对象内存图
单个对象
多个对象
- 多个对象可以共用方法,而每个成员变量的值有不同
多个对象指向相同
- 当两个对象指向相同(地址值相同),其中一个对象修改了堆内存中的内容,另一个去访问时,它的内容也是修改过的
3. 成员变量和局部变量
成员变量:类中方法外的变量(红色)
局部变量:方法中的变量(蓝色)
栈内存中没有初始化值,必须先定义,后使用。
4. 封装
private
使信息安全。
外界不能直接访问。
public class … {
private int age;
public void setAge (int a) {
age = a;
}
public int getAge() {
return age;
}
…
}
main ( … ) {
s. setAge ( 30 );
…
}
因为年龄是正数,所以要进行判断,修改代码如下:
public class … {
private int age;
public void setAge (int a) {
if ( a<0 || a>120) {
System . out . println(“error”);
} else {
age = a;
}
}
public int getAge() {
return age;
}
…
}
main ( … ) {
s. setAge ( -30 );
…
}
输出:error
private 关键字的使用
用get方法好处:想要什么格式直接通过它拿值,直接在测试类中拼接
而用show:给出一种固定的格式
this
- 若写形参与成员变量名字相同,一定要加this修饰,若不加,两个都认为是局部变量。
- 使用this : 解决局部变量隐藏成员变量
this : 代表所在类的对象引用
记住:方法被哪个对象调用,this就代表哪个对象
方法被哪个对象调用,哪个方法里的this就代表的是哪个对象。
封装
5. 构造方法
构造方法
构造方法是一种特殊的方法
作用:创建对象
格式:
public class 类名 {
修饰符 类名 ( 参数 ) {
}
}
例如:
注意:当一个类中没有给任何的构造方法,系统会给出默认的无参构造方法,即不会报错。
一旦给出了构造方法,系统将不再提供默认的无参方法,如果要使用,则手动给出。
如:
public calss Student {
……
public Student () { } //无参构造方法
public Student (String name ) {
this . name = name;
}
……
}
… main (…) {
Student s1= new Student ();
…
}
- 构造方法可以给成员变量赋值