面向对象(十二)

面向对象(十二)

什么是面向对象

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

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

三大特性

  1. 封装
  2. 继承
  3. 多态

类是一个模版,对象是一个具体的实例

创建和初始化对象

使用new关键字创建对象

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

package com.oop.demo01;

public class Student {

    //属性
    String name;
    int age;

    //方法
    public void study() {
        System.out.println(this.name+"在学习");
    }

}

//类是抽象的,需要实例化
//类实例化后会返回一个具体的对象
//    Student xm = new Student();
//        System.out.println(xm.name); //默认初始化 null
//        System.out.println(xm.age); //默认初始化 0
//    xm.name = "小明";
//    xm.age = 15;
//        xm.study();
//
//    Student xh = new Student();
//        System.out.println(xh.name);
//        System.out.println(xh.age); //新的实例 0

构造器

构造器的规则

  1. 构造器的名字必须和类的名字相同
  2. 必须没有返回类型,也不能写void

构造器的作用

  1. 在使用new创建一个实例化对象时,本质上是在调用构造方法
  2. 初始化对象的值

注意点

无参构造可以不自行创建,如果构造函数有参数,则需要自行创建,即显示创建

package com.oop.demo01;

public class Person {
    //属性
    String name;

    //无参构造:可以不自行定义,在创建类时会自动创建
    //可以在class文件中查看
    public Person() {

    }

    //有参构造:如果构造函数有了参数,就需要自行定义(显示定义)
    public Person(String name) {
        this.name = name;

    }
}

/*
public class Application {
    public static void main(String[] args) {

        //实例化一个对象,无参
        Person person = new Person();
        System.out.println(person.name);

        //实例化一个对象,有参数
        Person xm = new Person("小明");
        System.out.println(xm.name);

    }
}
 */

对象和实例化的内存示意图

现有Pet类,在Application中实例化一个dog对象和cat对象

package com.oop.demo02;

public class Pet {
    public String name;
    public int age;

    public void shout() {
        System.out.println("叫了一声");
    }
}

/*
Application:
public class Application {
    public static void main(String[] args) {

        //实例化一个Pet对象dog
        Pet dog = new Pet();
        dog.name = "旺财";
        dog.age = 3;
        dog.shout();

        //实例化一个Pet对象cat
        Pet cat = new Pet();

    }
}
 */

image-20210214222212464

面向对象简单总结

类与对象

  1. 类是一个模版,是抽象的;对象是一个具体的实例

方法

  1. 方法的定义和调用

对象的引用

  1. 引用类型:8大基本类型
  2. 对象是通过引用来操作的,栈--->堆

属性

  1. 字段Field 成员变量
  2. 各类型初始化的值:
    1. 数字:0, 0.0
    2. String: null
    3. Char: u0000
    4. Boolean: false
    5. 引用:null
  3. 修饰符 属性类型 属姓名 = 属性值

对象的创建和使用

  1. 必须使用new关键字创造对象,构造器
  2. 对象的属性
  3. 对象的方法

  1. 静态的属性
  2. 动态的方法
posted @ 2021-02-14 22:39  LucaZ  阅读(29)  评论(0编辑  收藏  举报