面向对象(OOP)和面向过程
OOP: Object Oriented Programming
面向过程: procedure oriented programing
两者都是一种思想, 面向对象是相对于面向过程而言的。面向过程强调的是功能行为; 面向对象则是将功能封装进对象,强调具备了功能的对象
面向过程的三大特征
- 封装(Encapsulation)
- 继承(Inheritance)
- 多态(Polymorphosm)
类和对象
类(class)和对象(Object)是面向对象的核心概念, 万事万物皆对象
类是对现实中一类事物的抽象描述,现实事物都具有属性和行为
类的成员变量描述事物的属性,类的成员方法描述事物的行为
对象则是实际存在的该类的一个个体, 是根据类的描述而创建出来的具体实例(instance)
定义类- public class Phone {
- // 成员变量
- String brand;
- double price;
- String color;
- // 成员方法
- public void call(){
- // 方法中未定义变量时, 会在成员变量中寻找对应的变量
- System.out.println(brand + " " + color + " " + price +"元的手机打电话了");
- }
- public void sms() {
- System.out.println(brand + " " + color + " " + price +"元的手机发短信了");
- }
- }
复制代码 创建对象- public class Demo {
- public static void main(String[] args) {
- // 创建对象, 依据是类模板
- Phone p1 = new Phone();
- Phone p2 = new Phone();
- // 对象属性的访问, 对象.属性
- p1.brand = "xiaomi";
- p1.color = "blue";
- p1.price = 1999.9;
- // 对象方法的访问 对象.方法名(参数)
- p1.call();
- p1.sms();
- // 每个对象都有自己的属性 且互不干扰
- p2.brand = "huawei";
- p2.color = "black";
- p2.price = 2399.9;
- p2.call();
- p2.sms();
- }
- }
复制代码 成员变量的默认值
JVM会自动对成员变量进行初始化
成员变量的默认值(隐式赋值)- int 0
- double 0.0
- String null
- char \u0000
复制代码 成员变量的显式赋值- public class Car {
- String brand = "leinuo";
- String color;
- double price = 9999.9;
- }
复制代码 属性私有化
防止在其它类中对成员变量直接的修改, 对数据进行一定的保护
可以使用修饰符private,被private修饰的成员变量/方法仅可以在本类中访问- public class Phone {
- // 成员变量
- private String brand;
- private double price;
- private String color;
- }
复制代码 setter和getter
在本类中给添加新的方法, 用于间接的访问私有属性- // Phone Class
- // 给属性赋值使用的方法被称为set方法, 有参无返回
- // 可以在set方法中对值的合法性做判断, 从而保护数据
- public void setPrice(double p) {
- if (price < 0 || price > 30000) {
- return ; // 提前弹栈
- }
- price = p;
- }
- // 获取属性值的方法被称为get方法, 无参有返回
- public double getPrice() {
- return price;
- }
- public void setBrand(String b) {
- brand = b;
- }
- public String getBrand() {
- return brand;
- }
- public String getColor() {
- return color;
- }
- public void setColor(String c) {
- color = c;
- }
- // Demo Class
- Phone p1 = new Phone();
- p1.setBrand("huawei");
- p1.setColor("black");
- p1.setPrice(2399.9);
- System.out.println(p1.getBrand() + " " + p1.getColor() + " " + p1.getPrice());
复制代码在idea中可以使用alt+insert -> Getter and Setter快速创建getter和setter
关键字 - this
上面的代码中的形参 a、b、c 不易区分
若修改为与成员变量相同, 由于就近原则(优先访问距离最近的)会导致成员变量没有接收到值- public void setColor(String color) {
- // 自己的值赋给自己
- color = color;
- }
复制代码 则需要对成员变量和局部变量加以区分,使用this关键字
this表示对象, this.color就是对象的color属性- public void setColor(String color) {
- this.color = color;
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |