【狂神说Java】面向对象

面向对象

  • 面向过程(线性思维)
    • 步骤清晰简单,第一步做什么,第二步做什么,依次进行
    • 适合处理些简单的问题
  • 面向对象
    • 分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对分类进行单独思考。 最后,对分类下得细节进行面向过程的思索。
    • 适合处理复杂的问题,适合处理多人协作的问题。
  • 宏观上面向对象处理分析整个系统,具体操作还是面向过程。

什么是面向对象

  • 面向对象编程(Object-Oriented Programming,OOP)

  • 面向对象编程的本质是:以类的方式组织代码,以对象的组织(封装)数据

  • 三大特性:

    • 封装
    • 继承
    • 多态
  • 从认识论角度考虑是先有对象后有类。

    • 对象,是具体的事物。
    • 类,是抽象的,是对对象的抽象。
  • 从代码运行角度考虑是先有类后有对象。

    • 类是对象的模板。

类和对象的关系

  • 类是一种抽象的数据类型,是对某一事物的描述/定义,但是不能代表某一个具体的事物。
  • 对象是抽象概念的具体实例。

类和对象的创建

// 一个类中只有一个public类,可以有多个非public类
public class Person(){
    // 定义属性
    private String name;
    private int age;
    // 定义方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
        // 一个类中只有一个main方法
    public static void main(String[] args) {
        // 设定的方法都不是static静态的需要先实例化 
        Person jie7 = new Person();
        // 实例化对象,调用构造方法Person()
        System.out.println(jie7.getName());// null
        // jie7.name = "Jie7" 在这不会报错,但是在另外的类中调用会报错,因为private限制其只能在当前类中使用
        jie7.setName("Jie7");
        System.out.println(jie7.getName()); // Jie7
    }
}

构造器(构造方法)

// 一个类即使什么都不写,他也会存在一个方法
// 可以看编译后的.class文件
// 这个方法被叫做构造方法
public class Person(){
    // new关键字,本质是在调用构造方法
    // 构造方法没有返回值,void也没有
    // 构造方法可用于初始化数据
    // 构造方法和类名一致
    public Person(){} // Person jie7 = new Person();
}    
    // 可以有多个构造方法(重载)
    public Person(String name){
        this.name = name; 
    } 
// Person jie7 = new Person("CC"); 实例化的时候把名字初始化
}

内存分析

public class Application(){
    public static void main(String[] args) {
        Pet dog = new Pet();
        dog.name = "旺财";
        dog.age = 1;
        Pet cat = new Pet();
    }
}
  1. 堆中加载Application类,静态方法区加载其静态方法(static),方法区加载main方法,方法区常量池存放常量值“旺财”
  2. 将main方法加载到栈中
  3. Pet dog = new Pet();时,dog存放于栈中、new的对象内容在堆中开辟空间
  4. 每次new新的对象都会开辟不同的内存空间

怎么确定项目中的类和方法。

将有关问题的描述记录下,给所有的名词、动词、形容词做记录。
在名词中找出可能的类。
在动词中找出可能的方法。
在形容词中找出属性。
将找出的方法和属性分配给各个类。

posted @ 2021-09-07 19:38  Jie7  阅读(50)  评论(0)    收藏  举报