Java的四大核心特性是:封装、继承、多态和抽象
-
封装(Encapsulation):封装是指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类提供的方法进行操作和访问。封装的主要目的是增强安全性和简化编程,使用者只需要知道对象提供哪些方法,而不需要了解内部细节。
-
继承(Inheritance):继承是从已有类得到继承信息创建新类的过程。子类继承父类的特性(属性和方法),并可以增加新的特性或重写父类的方法。这使得代码可以重用,提高了开发效率。
-
多态(Polymorphism):多态是指允许一个接口多种形态。在Java中,多态通常通过方法的重写(Override)和父类引用指向子类对象实现。这意味着同一个接口,使用不同的实例而执行不同操作。多态的存在增加了程序的灵活性和可扩展性。
-
抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。抽象类不能被实例化,只能被继承。抽象方法只声明,不实现,子类必须覆盖它的所有抽象方法。
注意:有些人认为认为抽象更多是一种编程思想或方法论,而不是语言本身的基本特性,所以有时候也称为三大基础特性
代码示例:
//封装+抽象示例
public abstract class Animal {
// 私有属性,封装了动物的名字
private String name;
// 公有方法,用于设置动物名字
public void setName(String name) {
this.name = name;
}
// 公有方法,用于获取动物名字
public String getName() {
return this.name;
}
public void eat() {
System.out.println("Animal is eating.");
}
// 抽象方法:动物发出声音
public abstract void makeSound();
// 抽象方法:动物移动的方式
public abstract void move();
}
//继承示例
// 子类继承自 Animal (以封装示例中的Animal作为父类)
public class Dog extends Animal{
@Override
public void eat() {
System.out.println("Dog is eating dog food.");
}
public void bark() {
System.out.println("Dog is barking.");
}
@Override
public void makeSound() {
System.out.println("Dog is barking.");
}
@Override
public void move() {
System.out.println("Dog is running.");
}
}
//多态示例
public class BaseDemo {
public static void main(String[] args) {
Animal myAnimal = new Dog(); // 父类引用指向子类对象
myAnimal.eat(); // 调用子类重写的 eat 方法
// 由于 myAnimal 是 Animal 类型,它不能直接调用 Dog 特有的 bark 方法
// 如果需要调用,需要将其转型为 Dog 类型
if (myAnimal instanceof Dog) {
Dog myDog = (Dog) myAnimal;
myDog.bark(); // 调用 Dog 的 bark 方法
myDog.move(); // 调用 Dog 的 bark 方法
}
}
}
在这个代码示例中,Animal类展示了封装特性,将动物的名称隐藏在内部,并通过公有方法 setName 和 getName 进行访问和修改。
Animal 和 Dog 类展示了继承,其中 Dog 类继承自 Animal 类,并重写了 eat 方法。最后,Demo 类展示了多态,其中 myAnimal 变量是 Animal 类型,但可以指向 Dog 类型的对象,并调用其重写的方法 eat。通过类型转换,我们还可以调用 Dog 类特有的 bark 方法。多态如何表示的呢?现在是Dog类来继承Animal 类,还可以创造出cat、bird等等动物类去继承Animal类并重写eat方法,这就是多态的一个体现。
关于抽象的展示:在这个示例中,Dog 类继承了 Animal 类,并提供了 makeSound 和 move 方法的具体实现。由于这些方法在 Animal 类中是抽象的,所以它们必须在子类中实现。通过抽象,我们可以定义通用的类(如 Animal),并根据需要创建具体的子类(如 Dog 和 Cat),从而实现代码的复用和灵活扩展。