- 面向对象关注的是问题解决的主体、主体的行为
面向过程关注的是问题解决的步骤
万物皆对象
- 面向对象编程的主体:
- 类:类是一个抽象的概念
- 对象:对象是类的一个具体存在(真实存在)
- 成员变量:在类体的变量部分中定义的变量
- 方法:在类体中定义的方法
一个类可以有很多个对象
一个类中的每个对象占用不同的内存这个类的所有对象共用类的方法
- 成员变量和局部变量的区别:
- 成员变量:写在类中的变量
- 局部变量:写在方法中的变量
应用范围:
- 成员变量:在整个类中都可以使用
- 局部变量:仅仅在当前方法中可以使用
生命周期:
- 成员变量:随着对象的创建而创建,随着对象的销毁而销毁
- 局部变量:随着方法的调用而创建,随着方法的调用完毕而销毁
初始值:
- 成员变量:如果没有给定初始值,是默认有初始值的
- 对于整形,初始值默认是0
- 对于char型,初始值是"\uoooo"
- 对于字符型或者对象类型,初始值是null
- 局部变量:如果没有给定初始值,不可以直接使用
存储位置:
- 成员变量:是对象的信息,存储在堆区
- 局部变量:存储于栈区
- 匿名对象:没有名称的对象
匿名对象可以作为方法入参
- 封装的步骤
- 私有化成员变量private
- 提供成员变量对应的setter和getter方法
private私有化,加上private修饰的成员变量、方法只能在当前类的内部使用
Public公共的,加上public修饰的成员变量、方法能在任何地方被使用
alt+shift+s ->get setter and getter:快速生成setter和getter方法的快捷键
- Scanner:类可以从键盘接受指定的信息
用法:
Scanner sc = new Scanner(System.in);
Scanner sc = new sc.next();
- 构造方法:对对象进行初始化
默认情况下,无参的构造方法即使我们没有写就算没有写,系统会帮我们生成。但是一旦我们自己写了有参的构造方法,系统不会帮我们生成无参的构造方法。
当我们通过newPerson(),这个方法来创建对象的时候,默认情况下会自动调用无参的构造方法。
反编译命令(可以查看一个字节码文件的信息):java
- this关键字:代表了方法的调用者,谁调用this关键字,this就是谁
我们可以通过在构造方法中使用this.setAge(age)类似的方式来调用对那个的setter方法
我们还可以通过在构造方法中是哦那个this(name)来调用其他的构造方法。当这样使用的时候,this(name)需要时第一行代码。
- Static代表静态的意思,static修饰的变量只会在方法去中维护一份,这个类的所有对象都可以访问static修饰的变量
静态变量属于类的信息,不属于对象的信息(但是对象可以访问)。
- 静态变量和成员变量的区别
静态变量:在方法去中只会维护一份,对应类的所有变量都可以访问这个静态变量
成员变量:存在于堆区,每一个类的对象都会维护一个自己的成员变量
- 所属不同
静态变量:是属于类的信息
成员变量:是属于对象的信息
- 生命周期不同
静态变量:随着类的加载而加载,随着类信息从内存释放而释放
成员变量:随着对象的创建而创建,随着对象的销毁而销毁
- 静态方法只能访问静态的信息
- 在静态方法中不可以使用this、super以及成员变量的信息