面向对象概述

软件开发分为两个方向:

  • PO (procedure oriented) 面向过程:面向过程就是将业务拆解成一个个步骤,比如启动汽车这个业务就可以拆解成:点火 ----> 松离合 ----> 挂挡 ----> 松离合 ----> 踩油门。适合于简单的业务流程。
  • OOP(object oriented programing) 面向对象:面向对象可以分为三个方面:1、OOA:面向对象分析;2、OOD:面向对象设计;3、OOP:面向对象编程。因此,面向对象就是先分析出此业务需要哪些对象参与 (对象包括了属性和行为)例如还是启动汽车这个业务,就可以分为:汽车对象和人对象。人有启动汽车的行为,由人对象来启动汽车对象。面向对象有很好的解耦合性,并且扩展性也很好,比如生产一台电脑,面向过程就需要一次成型,如果后续需要更改里面的磁盘大小,内存条大小就需要整体更换,但是面向对象的话就只需要将其中的磁盘对象更换就可以,非常方便。

面向对象三大特性

  • 封装
  • 继承
  • 多态

类和对象

类是一个抽象出的概念,比如说你我他都具有同样的属性如:姓名、身高、年龄等等和行为如:吃、睡觉等等,于是就可以抽象成“人类”。程序中,属性通常用变量表示;而行为通常用方法表示。

类 = 属性 + 方法。

而对象就是类的实例化,是具体的,例如抽象出了明星类,那比如蔡徐坤就是明星类具体的对象

/*
类创建语法:
[修饰符列表] class 类名 {
// 属性(描述状态)
// 方法(描述行为动作)
}
*/
// 例如:学生类
public class Student {
    // 属性1:姓名
    public String name;
    // 属性2:年龄
    public int age;
    // 属性3:学号
    public String studentNumber;


    // 行为:学习的行为
    public void study() {
        System.out.println("正在学习中...");
    }
}

对象的创建和使用:

class Test{
    public static void main(String[] args) {
        /*
        创建对象和使用
        Java中,类是一种引用数据类型
        Student是数据类型,s1是变量名
         */
        Student s1 = new Student();
        // 读取对象的属性
        s1.name;
        // 修改对象的属性
        s1.name = "蔡徐坤";
        // 使用对象的方法
        s1.study();
        // 类可以创建多个对象
        Student s2 = new Student();
        Student s3 = new Student();
        Student s4 = new Student();
    }
}

练一练:定义一个宠物类,属性包括名字,出生日期,性别。有吃和跑的行为。再编写测试程序,创建宠物对象,访问宠物的属性,调用宠物吃和跑的方法。

public class Pet {
    public String name;
    public String birthday;
    public char gender;
    
    public void eat(){
        System.out.println("正在吃...");
    }
    
    public void run() {
        System.out.println("正在跑...");
    }
}
public class PetTest {
    public static void main(String[] args){
        Pet cat = new Pet();
        cat.name = "曹髦";
        cat.birthday = "2026-3-29";
        cat.gender = '公';

        System.out.println("猫的信息:姓名:"+ cat.name +" 生日:"+ cat.birthday
                +" 性别:" + cat.gender);
        cat.eat();
        cat.run();
    }
}

以此例子来解析一下对象的内存分析

初次认识this关键字:出现在实例方法中,代表当前对象。“this.”大部分情况下可以省略。

this存储在实例方法栈帧的局部变量表的0号槽位上。

空指针异常是如何发生的?

public class PetTest {
    public static void main(String[] args){
        Pet cat = new Pet();
        cat.name = "曹髦";
        cat.birthday = "2026-3-29";
        cat.gender = '公';

        cat = null;

        System.out.println(cat.name);
    }
}

Java中的GC主要针对的是JVM的堆内存。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐