0%

面向对象

一,成员和局部

成员:也叫全局,定义在类中方法外

  1. 成员变量
  2. 成员方法

局部:定义在方法中

  1. 局部变量

局部变量和成员变量的区别:

  1. 定义位置:局部变量定义在方法中,成员变量定义在方法外

  2. 作用范围:局部变量只能在定义它的方法中使用,成员变量可以在整个类中使用

    重名问题:当局部变量和成员变量名相同时,采用就近原则进行调用

  3. 默认值:局部变量没有默认值,必须先赋值才可以使用,成员变量有默认值

    成员变量的默认值与数组默认值的规则相同

  4. 在内存中的位置:成员变量在堆中,因为成员变量属于类的对象;局部变量在栈中,因为局部变量只能在定义它的方法中使用,方法被调用后进入栈内存

  5. 生命周期:局部变量从方法调用开始,到方法运行完毕后释放;成员变量从创建对象开始,到对象从堆内存中释放结束。

二,面向对象的概念

面向过程的语言:C语言

面向对象的语言:C++、Java、Python

面向过程和面向对象都是编程思想

区别:

  1. 面向过程:重点放在程序的功能是如何执行的
  2. 面向对象:重点放在程序的功能可以找谁来完成

三,类和对象

类:数据类型,一类事物的集合

  1. 基本信息
  2. 行为

对象:根据类创建出来的一个实体(实例),这个对象具有该类中所有的基本信息和行为

根据类创建出来的实体,称为创建对象、也称为实例化

例如:

类:

​ 宠物类

  1. 基本信息:昵称、种类、年龄、性别、价格
  2. 行为:吃、睡

对象:

​ 宠物对象

  1. 基本信息:毛毛、田园犬、2、母、3000
  2. 行为:具体怎么吃、怎么睡

代码中:基本信息=>属性、行为=>方法

四,类的定义和对象的创建

4.1 类的定义

格式:

1
2
3
4
public class 类名{
属性
方法
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 定义了一个Hero类
public class Hero {
// 姓名
public String name;
// 血量
public int hp;

// 攻击
public void attack(){
System.out.println("攻击");
}

// 回城
public void back(){
System.out.println("回城");
}
}

4.2 对象的创建

格式:

1
数据类型 对象名(引用变量) = new 数据类型();
1
Hero h1 = new Hero();

五,属性和方法的调用

格式:

1
2
3
4
方法的调用:对象名.方法名(参数);
属性的调用:
1.获取:对象名.属性;
2.赋值:对象名.属性 = 值;

六,构造函数

6.1 构造函数的特点

  1. 构造方法的方法名与类名完全一致
  2. 每一个类都有一个默认的隐式的无参的构造函数
  3. 构造函数没有返回类型,连void都不能有
  4. 每次创建对象都会执行构造函数
  5. 一旦构造函数写出了,原来的默认构造函数就不存在了,除非重新写出它

6.2 构造函数的作用

  1. 创建对象
  2. 创建对象的同时对属性进行初始化

6.3 构造函数的重载

概念:同一个类中构造函数的参数列表不同就是构造函数重载

1
2
3
4
5
6
7
8
public Hero() {
}

public Hero(String name, String nation, int blood) {
this.name = name;
this.nation = nation;
this.blood = blood;
}