Skip to content

day_08:面向对象 ​

面向对象介绍

  • 向:拿、找
  • 对象:能干活的东西
  • 面向对象编程:拿东西过来做对应的事情
  • 符合人类思维习惯,编程更简单,更好理解
  • 面向对象三大特征:
    • 封装
    • 继承
    • 多态

一、设计对象并使用 ​

1. 类和对象 ​

  • 类(设计图):是对象共同特征的描述;
  • 对象:是真实存在的具体东西。 在Java中,必须先设计类,才能获得对象。

2. 定义类 ​

java
public class 类名{
    1、成员变量(代表属性,一般是名词)
    2、成员方法(代表行为,一般是动词)
    3、构造器(后面学习)
    4、代码块(后面学习)
    5、内部类(后面学习)
}

3. 创建对象 ​

java
类名 对象名 = new 类名();
  • 访问属性:对象名.成员变量
  • 访问行为:对象名.方法名(...)

补充注意事项

  • 用来描述一类事物的类,专业叫做:Javabean类。 在Javabean类中,是不写main方法的。

  • 在以前,编写main方法的类,叫做测试类。 我们可以在测试类中创建Javabean类的对象并进行赋值调用。

  • 类名首字母建议大写,需要见名知意,驼峰模式。

  • 一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。 实际开发中建议还是一个文件定义一个class类。

  • 成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值;一般无需指定初始化值,存在默认值。

  • 对象的成员变量的默认值规则:

    数据类型明细默认值
    基本类型byte、short、int、long0
    基本类型float、double0.0
    基本类型booleanfalse
    引用类型类、接口、数组、Stringnull

二、封装 ​

告诉我们,如何正确设计对象的属性和方法。

对象代表什么,就得封装对应的数据,并提供数据对应的行为。

降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象有哪些 方法,有需要时去找就行。

private关键字 ​

  • 是一个权限修饰符
  • 可以修饰成员(成员变量和成员方法)
  • 被private修饰的成员只能在本类中才能访问
  • 针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作
  • 提供setXxx(参数)方法,用于给成员变量赋值,方法用public修饰
  • 提供getXxx()方法,用于获取成员变量的值,方法用public修饰

三、this关键字 ​

1. 成员变量与局部变量 ​

  • 成员变量:定义在方法外,类里面的变量;
  • 局部变量:定义在方法内部的变量。

2. 就近原则 ​

成员变量和局部变量重合时,谁离得更近,就用谁。

3. this ​

this.变量名可以无视就近原则一定使用成员变量,可用来区分成员变量和局部变量。

四、构造方法 ​

1. 构造方法的格式 ​

构造方法也叫作构造器、构造函数。

java
public class Student {
    修饰符 类名(参数){
        方法体;
    }
}

特点

  • 方法名与类名相同,大小写也要一致;
  • 没有返回值类型,连void都没有;
  • 没有具体的返回值(不能由retrun带回结果数据)。

执行时机: ​

  • 创建对象的时候由虚拟机调用,不能手动调用构造方法;
  • 每创建一次对象,就会调用一次构造方法。

2. 构造方法的作用 ​

创造对象的时候,由虚拟机自动调用,给成员变量进行初始化的。

3. 构造方法注意事项 ​

  • 构造方法的定义

    • 如果没有定义构造方法,系统将给出一个默认的无参数构造方法;
    • 如果定义了构造方法,系统将不再提供默认的构造方法;
  • 构造方法的重载

    • 带参构造方法,和无参数构造方法,两者方法名相同,但是参数不同,这叫做构造方法的重载;
  • 推荐的使用方式

    • 无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法。

五、标准JavaBean ​

  • 类名需要见名知意
  • 成员变量使用private修饰
  • 提供至少两个构造方法
    • 无参构造方法
    • 带全部参数的构造方法
  • 成员方法
    • 提供每一个成员变量对应的setXxx()/getXxx()
    • 如果还有其他行为,也需要写上

六、对象内存图 ​

  • 一个对象的内存图

    1. 加载class文件
    2. 申明局部变量
    3. 在堆内存中开辟一个空间
    4. 默认初始化
    5. 显示初始化
    6. 构造方法初始化
    7. 将堆内存中的地址值赋值给左边的局部变量
  • 基本数据类型和引用数据类型的区别

    • 基本数据类型:数据值是存储在自己的空间中,赋值给其他变量,也是赋的真实的值;
    • 引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值,赋值给其他变量,赋的地址值。
  • this的内存原理

    • this 的作用:区分局部变量和成员变量
    • this 的本质:代表方法调用者的地址值

七、补充知识:成员变量、局部变量区别 ​

区别成员变量局部变量
类中位置不同类中,方法外方法内、方法是申明上
初始化值不同有默认初始化值没有,使用之前需要进行赋值
内存位置不同堆内存栈内存
生命周期不同随着对象的创建而存在,随着对象的消失而消失随着方法的调用而存在,随着方法的运行结束而消失
作用域整个类中有效当前方法中有效