面向对象基础

1. 类和对象

定义

类:是对现实生活中一类具有共同属性和行为的事务的抽象
image.png
属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值
对象:能够看得到摸得着的真实存在的实体
行为:对象能够执行的操作
类是对象的抽象
对象是类的实体

image.png
类的定义步骤: (Class)

  1. 定义类
  2. 编写类的成员变量
  3. 编写类的成员方法

image.png
image.png

对象的使用

image.png
new出来的东西在堆内存

//使用成员变量
p.brand=”HUAWEI”;
p.price=2999;
System.out.println(p.brand);
System.out.println(p.price);

//使用成员方法
p.call();
p.sendMessage();

例子:学生
image.pngimage.png
在同一个目录下,在main中调用

2. 对象内存图

单个对象

image.png
image.png

多个对象

image.png

  • 多个对象可以共用方法,而每个成员变量的值有不同

多个对象指向相同

image.png

  • 当两个对象指向相同(地址值相同),其中一个对象修改了堆内存中的内容,另一个去访问时,它的内容也是修改过的

3. 成员变量和局部变量

image.png
成员变量:类中方法外的变量(红色)
局部变量:方法中的变量(蓝色)

image.png
栈内存中没有初始化值,必须先定义,后使用。

4. 封装

private

image.png
使信息安全。
外界不能直接访问。
image.png
image.png
public class … {
private int age;

public void setAge (int a) {
age = a;
}
public int getAge() {
return age;
}

}

main ( … ) {
s. setAge ( 30 );

}

因为年龄是正数,所以要进行判断,修改代码如下:
image.png
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 关键字的使用

image.png
image.pngimage.png
用get方法好处:想要什么格式直接通过它拿值,直接在测试类中拼接
而用show:给出一种固定的格式

this

image.png
image.png

  • 若写形参与成员变量名字相同,一定要加this修饰,若不加,两个都认为是局部变量。
  • 使用this : 解决局部变量隐藏成员变量
  • this : 代表所在类的对象引用

    记住:方法被哪个对象调用,this就代表哪个对象

image.png

image.png
方法被哪个对象调用,哪个方法里的this就代表的是哪个对象。

封装

image.png

5. 构造方法

构造方法

构造方法是一种特殊的方法
作用:创建对象
格式:
public class 类名 {
修饰符 类名 ( 参数 ) {
}
}
例如:
image.png
注意:当一个类中没有给任何的构造方法,系统会给出默认的无参构造方法,即不会报错。
一旦给出了构造方法,系统将不再提供默认的无参方法,如果要使用,则手动给出。
如:
public calss Student {
……
public Student () { } //无参构造方法
public Student (String name ) {
this . name = name;
}
……
}
… main (…) {
Student s1= new Student ();

}

  1. - 构造方法可以给成员变量赋值

构造方法的注意事项

image.png

标准类制作

image.png