java继承实现了什么多态
时间: 2023-08-15 20:41:09 浏览: 48
Java中的继承实现的是编译时多态(静态多态)。
继承是面向对象编程中的一种重要特性,它允许一个类继承另一个类的属性和方法。当一个子类继承了父类,并重写了父类中的方法时,子类对象就可以通过父类类型的引用调用这个方法,这就是编译时多态。例如:
```
class Animal {
void makeSound() {
System.out.println("动物发出声音");
}
}
class Dog extends Animal {
void makeSound() {
System.out.println("汪汪汪");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Dog();
animal.makeSound(); // 编译时类型是Animal,运行时类型是Dog,输出“汪汪汪”
}
}
```
在这个例子中,Animal是一个父类,其中定义了一个方法makeSound()。Dog是Animal的子类,重写了makeSound()方法。在main()方法中,创建了一个Dog对象,并将它赋值给Animal类型的引用变量animal。animal.makeSound()调用的是Dog类的makeSound()方法,这就是编译时多态。
相关问题
java实现封装继承多态
在Java中,封装、继承和多态是面向对象编程的三个重要概念。
1. 封装(Encapsulation):封装是将相关的变量和方法组合在一个单元(类)中,通过访问修饰符来控制外部对内部数据和方法的访问。这样可以隐藏内部实现细节,提高代码的安全性和可维护性。
示例代码:
```java
public class Person {
private String name; // 私有属性
private int 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. 继承(Inheritance):继承是通过创建一个新类来扩展已有类的功能。子类继承了父类的属性和方法,并可以添加自己的特性。继承可以提高代码的重用性和可扩展性。
示例代码:
```java
public class Student extends Person {
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
}
```
3. 多态(Polymorphism):多态允许使用一个父类类型的引用来引用子类对象,根据具体对象的类型调用相应的方法。多态可以提高代码的灵活性和可扩展性。
示例代码:
```java
public class Main {
public static void main(String[] args) {
Person person = new Student(); // 使用父类类型的引用指向子类对象
person.setName("Tom");
person.setAge(20);
System.out.println(person.getName()); // 调用子类的方法
}
}
```
以上是Java中封装、继承和多态的简单示例。通过封装、继承和多态的使用,可以更好地组织和管理代码,提高代码的可读性和可维护性。
java继承封装多态
Java中的继承、封装和多态是面向对象编程的三个重要概念。
1. 继承(Inheritance)是指一个类可以继承另一个类的属性和方法。通过继承,子类可以直接使用父类的属性和方法,并且可以在其基础上进行扩展和修改。继承可以实现代码的重用和层次化设计。
2. 封装(Encapsulation)是指将数据和对数据的操作封装在一个类中,通过访问控制(如私有化成员变量、提供公共的访问方法)来保护数据的安全性。封装可以隐藏具体实现细节,提供对外部的接口,提高代码的可维护性和可复用性。
3. 多态(Polymorphism)是指同一类型的对象,在不同的情况下表现出不同的行为。在Java中,多态可以通过方法的重写(Override)和方法的重载(Overload)来实现。多态可以提高代码的灵活性和可扩展性。