三大特性

2023/11/6 Java基础

  • Java的核心思想:面向对象,一切事物皆对象。而面向对象的三个特性才构成了面向对象。
  • Java的三大特性:封装、继承、多态。
  • 也可称为四大特性,还有一个抽象。

# 1、封装

封装是一种隐藏类的内部细节并保护数据的方法。在Java中,可以通过访问修饰符(private、protected、public)来控制对类中的成员变量和方法的访问。这样可以将数据(状态)和代码(行为)绑定在一起,防止任意修改对象内部的状态。

public class Student {
    private String name;  // The name variable is encapsulated
  
    public String getName() {  // Accessor method
        return name;
    }
  
    public void setName(String name) {  // Mutator method
        this.name = name;
    }
}
1
2
3
4
5
6
7
8
9
10
11

# 2、继承

继承是一种使得子类可以获取父类的字段和方法的机制。这样可以实现代码的重用,同时也可以添加或覆盖父类中的行为。上一节继承中有继承的一些详解案例。

public class Animal {
    public void eat() {
        System.out.println("Eating...");
    }
}

public class Dog extends Animal {
    public void bark() {
        System.out.println("Barking...");
    }
}
1
2
3
4
5
6
7
8
9
10
11

# 3、多态

Java中的多态性允许使用父类的引用变量来引用子类的对象,并调用子类重写的方法。通过多态性,可以写出更灵活、可扩展的代码,并且使代码更易于理解和维护。

class Animal {
    public void makeSound() {
        System.out.println("Animal is making a sound");
    }
}

class Dog extends Animal {
    public void makeSound() {
        System.out.println("Dog is barking");
    }
}

class Cat extends Animal {
    public void makeSound() {
        System.out.println("Cat is meowing");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal1 = new Dog();
        Animal animal2 = new Cat();
        
        animal1.makeSound(); // 输出 "Dog is barking"
        animal2.makeSound(); // 输出 "Cat is meowing"
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

Java中多态的体现,以下的一些都是多态的一个体现方式:

  • 方法重写(Method Overriding):子类可以重写父类的方法,通过使用父类引用变量访问子类重写的方法。这样可以实现基于父类引用调用子类的具体实现。
  • 接口的多态性:接口定义了一组方法的规范,类实现了接口后,可以通过接口引用变量来实现对这些类对象的多态引用。
  • 抽象类的多态性:抽象类可以包含抽象方法,子类可以重写这些方法,实现多态。

多态是一个形式的多样性体现,简单案例就是接口,通过new接口实例,来调用实现类的方法。

# 4、抽象

抽象性是一种概念或思维方式,它能够从具体的事物中提取出共同的特征或本质,并将其表示为一个抽象的概念或抽象的模型。在抽象化的过程中,我们忽略了具体事物的细节和个别差异,而关注它们的共同特征和行为。通过抽象,我们可以更好地理解事物的本质和原理,并将其简化为更通用的概念。抽象性可以让我们从一个具体的案例中提取出普遍规则,从而应用于其他类似的情况。我们只需要关注它们的共同特征和行为,只需要关注我们需要的部分