Java面向对象02:什么是面向对象

面向过程 vs. 面向对象

面向过程

  • 步骤清晰简单,第一步,第二步...
  • 适合处理一些简单的问题

面向对象(Object Oriented Programming,OOP)

  • 解决问题时首先思考问题可以怎么分类,然后对这些分类进行单独思考,最后才对具体的细节进行面向过程编程
  • 使用面向对象的思路来分析整个系统,从宏观上把握,从整体上合理分析;但具体到微观操作,仍然需要面向过程的思路去处理
  • 面向对象的本质就是:以类的方式组织代码,以对象的组织封装数据
  • 适合处理复杂的大问题

类与对象

  • 类是一种抽象的数据类型,它是对某一类事物整体的定义,但并不能代表某一个具体的事物

  • 如Person类、Pet类、Car类...

对象

  • 对象是抽象概念的具体实例

  • 如张三就是人的一个具体实例,哈士奇就是宠物的一个具体实例

从认知角度,先有对象后有类。对象,是具体的事物;类,是对对象的抽象

从代码运行角度,先有类后有对象。类是对象的模板

类与对象的创建

new关键字

使用new关键字创建对象时,除了分配内存空间之外,还会给对象进行默认的初始化以及对类中构造器的调用

public class Hello {
    //一个项目应该只有一个main方法
    public static void main(String[] args) {
        //类实例化后会返回一个自己的对象
        //xm对象就是Student类的具体实例
        Student xm = new Student();
        xm.name = "小明";
        xm.age = 3;
        xm.print();
    }
}
//创建学生类,抽象的
class Student{
    //属性
    String name;
    int age;
    //方法
    public void print(){
        System.out.println(name + " " + age + "岁");
    }
}

构造器

类中的构造器也称为构造方法,是在进行创建对象时必须要调用的。构造器具有以下两个特点:

  • 必须和类的名字相同

  • 必须没有返回值类型,也不能写void

.java文件

public class Hello {
    //一个项目应该只有一个main方法
    public static void main(String[] args) {
        //new 实例化了一个对象
        Student student = new Student();
    }
}
//创建学生类,抽象的
class Student{
    
}

Student.class文件反编译

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

class Student {
    Student() {  //可以看到创建类时,隐式定义了一个方法,其名字和类名一致,无参且没有返回值,这就是构造方法
    }
}

new对象和构造器的关系

public class Hello {
    //一个项目应该只有一个main方法
    public static void main(String[] args) {
        //new 实例化了一个对象
        Student student = new Student();
        System.out.println(student.name);
    }
}
//创建学生类,抽象的
class Student{
    String name;
    int age;
    //1. new对象时,其本质是在调用构造器,其是隐式定义的
    //2. 构造器一般用来初始化值
    Student(){
        this.name = "ty";
    }
    //如果重载了一个有参构造器,则默认的无参构造器必须显示定义,否则无效,快捷键alt + insert
    Student(int age){
        this.age = age;  //this关键字指定对象的属性,和形参做区分
    }
}

Java面向对象02:什么是面向对象

上一篇:C# datagridview只允许输入数字


下一篇:ps想将偏暗的人物转为橙红的手绘效果(更换服饰)