面向对象(基础,封装)

本文最后更新于:1 年前

二十四、面向对象基础

1.面向对象思想

​ 面向对象的思想其实就是让我们去指挥别人或者是使用工具帮我们去把要做的事情完成。

2.类和对象

2.1 概念

类:对一类事物共同点的 描述

对象:对象是某类事物的一个 个体

类仅仅只是描述,我们要指挥事物指挥的肯定是某类事物中的一个个体。我们去指挥或者使用事物的时候肯定是使用其中的具体的个体也就是对象。

2.2 类的定义

我们去描述一类事物的共同点可以分成两种,一种是属性,一种是行为(技能)。

属性:具有具体的值的共同点就是属性(例如:姓名,年龄,血量),我们用成员变量表示

行为(技能): 具体的技能或功能这些都是包含了一系列的动作。这些共同点就是行为,我们用成员方法表示。(例如:吃饭,睡觉)

成员变量:定义在类中方法外的变量就是成员变量。

成员方法:没有static修饰的方法就是成员方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Phone {

// 成员变量
String brand; // 品牌
double price; // 价格
String color; // 颜色

// 成员方法
public void call() {
System.out.println("打00009999888866663333333325474425477747*##36363#打电话");
}

public void sendMessage() {
System.out.println("群发短信");
}


}

2.3 对象的创建和使用

2.3.1 创建对象格式

类名 对象名 = new 类名();

1
2
Phone phone = new Phone();
Student stu = new Student();

2.3.2 成员变量的使用格式

对象名.成员变量名

注意:在定义的类中使用本类中的成员变量的时候 对象名. 可以省略 可以直接写 成员变量名

1
2
3
4
5
Phone phone = new Phone();
//设置phone的brand属性
phone.brand = "华为";
//打印phone的brand属性
System.out.println(phone.brand);

2.3.3 成员方法的调用格式

对象名.方法名(参数)

注意:在定义的类中使用本类中的成员方法的时候 对象名. 可以省略 可以直接写 方法名(参数)

1
2
3
Phone phone = new Phone();
//使用phone的sendMessage方法
phone.sendMessage();

3. 构造方法

3.1 定义格式

构造方法的定义格式就是在普通成员方法定义格式的基础上加上了两个强制的要求。

要求:①没有返回值类型,连void都不能写 ②方法名和类名必须相同

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Phone {
// 成员变量
String brand; // 品牌
double price; // 价格
String color; // 颜色
public Phone(){
//这是一个无参构造
}
public Phone(String color,double price,String brand){
//这是一个有参构造
this.color = color;
this.price = price;
this.brand = brand;
}
}

3.2 调用格式

new 类名(参数);

例如:

1
2
Phone p = new Phone();
Phone p2 = new Phone("原谅绿",2999.9,"华为");

3.3 构造方法的作用

  • 创建对象
  • 在创建对象的时候更便捷的对成员变量进行赋值
  • 对类中的成员变量进行默认初始化

3.4 注意事项

如果一个类中没有写构造方法,编译器会默认送我们一个无参构造方法,但是如果自己写了,编译器就不会送了。这种情况下建议自己再加一个无参构造

二十五、面向对象-封装

1.封装的概念

​ 封装其实就相当于把不需要用户了解细节(隐私或者的特别复杂的细节)包装(隐藏)起来,只对外提供公共访问方式 。

2. 成员变量私有化(封装的一种体现形式)

​ 我们可以使用private来修饰成员变量,提供对应的set/get方法提供刚刚的访问方式。

2.1 private

​ private是一个修饰符,它可以用来修饰类中的成员变量或者成员方法,被它修饰的成员变量只能在本类中访问,不能在其他类中直接访问

例如:

1
2
3
public class Phone{
private String brand;//在成员变量定义的前面加上private修饰
}

2.2 set/get方法

​ setXxx方法用来对成员变量赋值,所以方法参数一般是和这个成员变量是同一个数据类型,没有返回值。

​ getXxx方法用来获取成员变量的值,所以方法一般是没有参数,有返回值,返回值类型就是这个成员变量的数据类型。

​ 注意:上面的Xxx代表成员变量名,注意遵循小驼峰命名规范

例如:

1
2
3
4
5
6
7
8
9
10
11
12
public class Phone{
private String brand;
public void setBrand(String brand){
this.brand = brand;
}
public String getBrand(){
return brand;
}
public Phone(String brand){
this.brand = brand;
}
}

3. this

​ this可以用来在局部变量和成员变量重名的时候区分他们,加了this的就是成员变量。

​ 注意:我们只能在一个类的成员方法或者构造方法中去使用this。

3.1 小思考

​ this究竟代表什么?this代表当前对象

4.思考

​ 我们之前用构造方法可以给成员变量赋值,现在学习了set方法也可以给成员变量赋值。那么它们使用起来有区别吗?


面向对象(基础,封装)
http://example.com/2020/02/01/面向对象(基础-封装)/
作者
三更草堂
发布于
2020年2月1日
更新于
2023年7月9日
许可协议