淘先锋技术网

首页 1 2 3 4 5 6 7

在Java中,有三种常见的面向对象编程 (OOP) 概念:重写、重载和隐藏封装。

重写 (Override) 是指子类通过继承父类的方法,在自己的类中重新定义一遍该方法。重写发生在两个类之间,其中一个是子类,另一个是父类。

<code>public class Animal {
public void makeSound() {
System.out.println("Animal makes sound.");
}
}
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow!");
}
}
public class Example {
public static void main(String[] args) {
Animal animal = new Animal();
animal.makeSound(); // 输出 "Animal makes sound."
Cat cat = new Cat();
cat.makeSound(); // 输出 "Meow!"
}
}
</code>

在上述示例中,Cat 类重写 (Override) 了 Animal 类的 makeSound() 方法。在调用 Cat 类的 makeSound() 方法时,会输出 "Meow!",而不是 Animal 类的 makeSound() 方法中输出的 "Animal makes sound."。

重载 (Overload) 是指在同一个类中,为一个方法定义多个签名。这些签名应该有不同的参数类型和/或参数数量。当使用重载函数时,编译器会自动选择最匹配的函数进行调用。

<code>public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
}
public class Example {
public static void main(String[] args) {
Calculator calculator = new Calculator();
System.out.println(calculator.add(1, 2)); // 输出 3
System.out.println(calculator.add(1, 2, 3)); // 输出 6
}
}
</code>

在上述示例中,Calculator 类中的 add() 方法被重载了两次,分别有两个参数和三个参数。在使用 add() 方法时,编译器会自动匹配最匹配的 add() 方法。

隐藏封装 (Encapsulation) 的意义是:把类设置为私有,使得只有类内部的代码可以访问它。这个意义被称为数据隐藏 (Data Hiding)。为了保证类中的私有成员不会被外部程序访问,我们需要以访问修饰符 private 来定义这些成员。

<code>public class Person {
private int age;
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
public class Example {
public static void main(String[] args) {
Person person = new Person();
person.setAge(20);
System.out.println("Age: " + person.getAge());
}
}
</code>

在上述示例中,Person 类中的 age 成员被隐藏封装。它只能在 Person 类中被访问,因为它被定义为私有成员。不过,通过 setAge() 和 getAge() 方法可以在外部访问 age 成员,但这些方法已经封装了对 age 成员的访问,并且设定了 get 和 set 方法的规则,所以可以在外部使用。