Java的三大特性指的是:封装、继承和多态。
1.封装
封装是指将对象的属性和方法封装到一个类中,通过公有的方法来访问这些属性和方法。封装的目的是增强安全性和简化编程,使用者只需了解外部接口,通过特定的访问权限来使用类的成员。
好处:可以提高代码复用性、可维护性和减少模块间的干扰。
示例:
public class Person {
private String name;
private int age;
// 构造函数
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 公有的方法来访问和修改内部状态
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
2.继承
继承是指子类可以继承父类的属性和方法,并且可以重写或添加新的方法。通过继承,可以实现代码的复用,提高开发效率和软件的可维护性。
示例:
java`public class Animal {
public void makeSound() {
System.out.println("The animal makes a sound");
}
}
Dog类继承了Animal类
public class Dog extends Animal { } // Dog继承了Animal类
3.多态
多态允许使用一个接口多种形态。简而言之,就是一个方法可以有多种实现方式,或者子类对象可以以父类引用的形式存在。
存在条件:继承、重写、父类引用指向子类对象。
Java中多态的例子(这个例子允许我们使用父类引用指向子类对象):
// 定义一个动物接口
interface Animal {
void sound();
}
// 创建两个实现Animal接口的类
class Dog implements Animal {
@Override
public void sound() {
System.out.println("你在狗叫什么!");
}
}
class Cat implements Animal {
@Override
public void sound() {
System.out.println("我的猫像我,我像我的猫!");
}
}
// 主函数中体现多态
public class Main {
public static void main(String[] args) {
// 创建Animal类型的引用,但实际指向的是Dog和Cat对象
Animal myDog = new Dog();
Animal myCat = new Cat();
// 通过Animal类型的引用调用sound方法,体现了多态性
myDog.sound(); // 输出:你在狗叫什么!
myCat.sound(); // 输出:我的猫像我,我像我的猫!
}
}
这个例子中,尽管myDog和myCat都是Animal类型,但由于它们分别指向了Dog和Cat实例,因此在调用sound()方法时会根据实际的对象类型执行不同的操作,这就是多态的表现形式。