Java面向对象
面向对象与面向过程
面向过程
- 概述:
分析出解决问题所需的步骤,用函数把这些步骤一步一步实现,使用的时候一个一个依次调用
- 特点:
- 强调的是功能行为
- 关注的是解决问题需要哪些步骤
- 优缺点:
- 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
- 缺点:没有面向对象易维护、易复用、易扩展
面向对象
- 概述:
把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为
- 特点:
- 将功能封装进对象,强调具备了功能的对象
- 关注的是解决问题需要哪些对象
- 优缺点:
- 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
- 缺点:性能比面向过程低
类和对象
- 概述:
类 是一个模板,它描述一类对象的行为和状态,是具有相同属性和行为的一类事物的抽象。
对象 是类的具体体现(实例),有状态和行为;对象的状态就是属性,行为通过方法体现。 - 创建类和创建对象的步骤
- 抽取出具有相同属性和行为的一类对象,封装成一个类。
- 使用类去创建对象。
- 创建类 格式
- 找到属性和行为:
- 属性一般使用变量来体现。
- 行为一般使用方法来体现。
- 找到属性和行为:
public class 类名{ //类名大写字母开头
//属性
//行为
}
- 创建对象 格式
- 类名 对象名 = new 类名();
Student stu1 = new Student();
构造方法(构造器)
概述:
用来创建对象的方法,只能在创建对象时调用
编译器会提供一个默认构造方法(无参),创建对象时至少要调用一个构造方法
构造方法的名称必须与类名相同,构造方法传参是为了给属性赋值,构造方法的返回值是对象的地址值
this的本质就是“创建好的的对象的地址”, 由于在构造方法调用前,对象已经创建. 因此,在构造方法中也可以使用this代表“当前对象”.
//无参构造方法 public class 类名(){}
成员变量(实例变量,属性),局部变量
成员变量(实例变量,属性)
- 概述:
- 类中,方法外,叫做成员变量
局部变量
- 概述:
- 写在方法中,叫局部变量
区别:
- 局部变量不赋值不能使用,成员变量不赋值有默认值
- 作用范围不同,局部变量只能在定义的方法中使用,成员变量在类的所有的方法中都可以使用。
- 内存不同。局部变量在栈区,成员变量在堆区。
- 生命周期不同,局部变量会在方法被调用时创建,方法结束销毁;成员变量随着对象的创建而存在,随着对象的销毁而销毁。
- 如果成员变量和局部变量名字相同,优先会使用局部变量。如果想要使用成员变量,需要加上this关键字。
- 调用方式:
- 调用成员变量: 对象.变量名
- 调用局部变量: 变量名
静态成员: 静态变量与静态方法
- 概述:
有static关键字的变量为静态变量;有static关键字的方法为静态方法,统称为静态成员
静态变量不赋值默认值为null
静态成员在内存的方法区
静态成员随着类的加载而创建,随着类的销毁而销毁
- 调用静态变量: 类名.变量名
- 调用静态方法: 类名.方法名()