用Java实现继承多态封装代码
时间: 2024-05-11 07:17:48 浏览: 106
下面是一个简单的Java代码示例,演示了如何使用继承、多态和封装:
```java
// 定义一个Animal类
class Animal {
private String name;
private int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void eat() {
System.out.println(name + " is eating.");
}
}
// 定义一个Dog类,继承自Animal类
class Dog extends Animal {
public Dog(String name, int age) {
super(name, age);
}
// 重写eat方法
@Override
public void eat() {
System.out.println(getName() + " is eating bones.");
}
// 新增方法
public void bark() {
System.out.println("Woof! Woof!");
}
}
// 定义一个Cat类,继承自Animal类
class Cat extends Animal {
public Cat(String name, int age) {
super(name, age);
}
// 重写eat方法
@Override
public void eat() {
System.out.println(getName() + " is eating fish.");
}
// 新增方法
public void meow() {
System.out.println("Meow! Meow!");
}
}
// 测试类
public class Main {
public static void main(String[] args) {
Animal animal1 = new Animal("Animal", 5);
animal1.eat(); // 输出:Animal is eating.
Dog dog1 = new Dog("Dog", 3);
dog1.eat(); // 输出:Dog is eating bones.
dog1.bark(); // 输出:Woof! Woof!
Cat cat1 = new Cat("Cat", 2);
cat1.eat(); // 输出:Cat is eating fish.
cat1.meow(); // 输出:Meow! Meow!
// 使用多态
Animal animal2 = new Dog("Poodle", 1);
animal2.eat(); // 输出:Poodle is eating bones.
// animal2.bark(); // 编译错误,Animal类没有bark方法
Animal animal3 = new Cat("Siamese", 2);
animal3.eat(); // 输出:Siamese is eating fish.
// animal3.meow(); // 编译错误,Animal类没有meow方法
}
}
```
在上面的代码中,我们定义了一个Animal类,它有私有的name和age属性,以及公有的getName、getAge和eat方法。然后我们定义了一个Dog类和一个Cat类,它们都继承自Animal类,并且分别重写了eat方法,并新增了各自的方法bark和meow。
在测试类Main中,我们分别创建了一个Animal、一个Dog和一个Cat对象,并调用了它们的方法。然后我们使用多态,将一个Dog对象和一个Cat对象分别赋值给Animal类型的变量,然后调用它们的eat方法。可以看到,它们分别调用了Dog和Cat类中重写的eat方法,而不是Animal类中的eat方法。此外,由于Animal类没有bark和meow方法,我们无法在animal2和animal3对象上调用这些方法。
阅读全文