面向对象

面向对象四大特征:

  • 抽象
  • 封装
  • 继承
  • 多态

类和对象

一个类的定义如下:

public class Dog{
  int age; // 默认修饰符为 public
  private String color;
  public Dog(String color){ // 构造函数
    this.color = color;
  }
  void barking(){ // 实例方法
    System.out.println(this.age);
    System.out.println(color);
  }
}

对象是类的实例:

Dog dog = new Dog("red");
dog.age = 3;
dog.barking(); // 3 red

注: 无参构造、全参构造和getter、setter可通过Lombok简单实现, 具体参考我的另一篇文章 Lombok

访问控制

private default protected public
自己包自己类
自己包别的类
别的包别的类有继承关系
别的包别的类无继承关系

构造函数

当一个对象被创建时候,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但构造方法没有返回值。

通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。

不管你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,它把所有成员初始化为0。

一旦你定义了自己的构造方法,默认构造方法就会失效。

析构函数

Java允许定义这样的方法,它在对象被垃圾收集器析构(回收)之前调用,这个方法叫做finalize( ),它用来清除回收对象。

格式:

protected void finalize() throws Throwable {}

举例:

public class FinalizationDemo {
    public static void main(String[] args) {
        Cake c1 = new Cake(1);
        Cake c2 = new Cake(2);
        Cake c3 = new Cake(3);
        c2 = c3 = null;
        System.gc(); // 调用Java垃圾收集器
    }
}
class Cake extends Object {
    private int id;
    public Cake(int id) {
        this.id = id;
        System.out.println("Cake Object " + id + "is created");
    }
    protected void finalize() throws java.lang.Throwable {
        super.finalize();
        System.out.println("Cake Object " + id + "is disposed");
    }
}

执行结果:

Cake Object 1is created
Cake Object 2is created
Cake Object 3is created
Cake Object 3is disposed
Cake Object 2is disposed

静态方法

使用 static 修饰符修饰的方法是静态方法, 需要用类名调用:

class A {
	public static void func1() {
		System.out.println("func1");
	}
	public void func2() {
		System.out.println("func2");
	}
}
// 调用时
A.func1();
new A().func2();

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress