Java 基础入门篇(五)—— 面向对象编程
文章目录
- 一、面向对象的思想
- 二、类的定义与对象的创建
- 三、对象内存分配情况 ★
- 3.1 两个对象的内存图
- 3.2 两个变量指向同一个对象内存图
- 四、构造器
- 4.1 构造器的格式与分类
- 4.2 构造器的调用
- 五、 this 关键字
- 六、封装
- 七、标准JavaBean
- 补充:局部变量和成员变量的区别
一、面向对象的思想
面向对象: 把现实世界中的事物全部看成一个个的对象来解决问题的,即万物皆对象。面向对象编程,即使用对象中的方法来解决问题。其好处在于,代码符合人类的思维习惯,编程程序更简单,看程序更容易理解吧。
类(设计图): 相同事物共同特征的描述;对象(实例):对象是类的具体的实例。在 Java 中必须先定义类,才能得到对象。
二、类的定义与对象的创建
类中包含五种成分:成员变量、成员方法、构造器、代码块、内部类。类的定义格式如下:
成员变量的完整格式:修饰符 数据类型 变量名称 = 初始化值
,一般无需为成员变量指定初始化值,存在默认值。默认值参考:
注意事项:
① 类名首字母建议大写,有意义且要满足驼峰。不要用关键字,要使用合法的标志符。
② 一个 Java 文件中可以定义多个类,但是只能一个类是 public 修饰的,而且 public 修饰的类名必须成为 Java 代码的文件名称,否则报错!
对象的创建: 类名 对象名 = new 构造器();
对象的使用:对象名.成员变量;对象名.成员方法
三、对象内存分配情况 ★
对象是引用类型,创建后会在堆内存中进行存储,栈内存存储引用地址。
Java 的内存分配参考:Java基础入门篇(三)—— 数组的定义与内存原理
3.1 两个对象的内存图
3.2 两个变量指向同一个对象内存图
注意: 当堆内存中的对象,没有被任何变量引用(指向)时,就会被判定为内存中的垃圾。Java存在自动垃圾回收器,会定期进行清理。
四、构造器
构造器用于初始化一个类的对象,并返回这个对象的地址。
4.1 构造器的格式与分类
无参数构造器: 初始化一个类的对象,并返回这个对象的地址,里面的数据都是默认值。
有参数构造器: 初始化一个类的对象,并返回这个对象的地址,并且可以同时为对象赋值。
public class Car {
private String name;
private Double price;
...
//无参数构造器
public Car(){
...
}
//有参数构造器
public Car(String name, Double price)(){
...
}
}
4.2 构造器的调用
如:
Car c = new Car(); // 无参构造
Car c1 = new Car("奔驰", 39); // 有参构造
注意事项:
① 任何类写出来自带一个无参数构造器,写不写都有;
② 如果定义了一个有参数构造器了,那么无参数构造器就消失了。此时,如果需要使用无参数构造器,必须自己写。
五、 this 关键字
this 代表了当前对象的地址,出现在有参构造函数和成员方法中,可以访问当前对象的成员变量和成员方法。如:
// 有参构造
public Car(String name, double price){
// 注意:this在构造器中,代表构造器正在初始化的那个对象。
System.out.println(this);
this.name = name;
this.price = price;
}
// 成员方法
public void goWith(String name){
// 注意:this 代表当前访问该方法的对象
System.out.println(this.name + "正在和" + name + "比赛");
this.play();
}
六、封装
面向对象的三大特征:封装、继承、多态。
封装的基本思想: 决定属性和行为归属谁的问题。
如:定义人类(名称,年龄,吃饭、睡觉)、定义圆类(半径,画圆)、定义门类(开门,高宽)…
如何更好的封装呢? 成员变量建议 private 私有化,只能本类访问了。
合理暴露:提供成套的 getter 和 setter 方法暴露取值和赋值。
public class Car {
private String name;
private Double price;
public Car(){ // 默认有无参构造函数
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
}
七、标准JavaBean
JavaBean 就是所谓的实体类(学生类,老师类,汽车类,票类,人类)
作用:创建对象,封装数据的。
标准Bean的书写要求:
① 成员变量建议 private 私有化,只能本类访问了。
② 合理暴露,提供成套的 getter 和 setter 方法暴露取值和赋值。
③ 必须提供无参数构造器;有参数构造器是可写可不写的。
补充:局部变量和成员变量的区别
文章参考:Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程(含Java项目和Java真题)