java 中 一个函数的入参能兼容A类对象和B类的对象
时间: 2024-10-13 11:02:22 浏览: 27
C++设计类不能被继承的方法实例讲解
在Java中,要让一个函数能够接受`A`类对象和`B`类对象作为输入,通常需要使用父类引用(Object 或者 A、B 的共同基类)作为函数的参数类型。这通过泛型(Generics)、抽象类或者接口来实现。
1. **泛型**:如果`A`和`B`都继承自相同的超类或者实现了同一个接口,你可以定义一个泛型方法,指定类型参数T为它们共有的类型:
```java
public <T extends A & B> void process(T obj) {
//...
}
```
2. **抽象类**:如果`A`和`B`共享一些公共的行为,可以定义一个抽象类,并让它们都继承这个抽象类。然后,在这个抽象类里定义一个接收此类对象的方法:
```java
abstract class CommonParent {
public abstract void process();
}
class A extends CommonParent {
//...
}
class B extends CommonParent {
//...
}
void process(A a, B b) {
a.process(); // 使用父类引用处理
b.process(); // 同样处理
}
```
3. **接口**:如果`A`和`B`共享一些方法,可以定义一个接口,让它们都实现这个接口,然后在函数中使用接口类型的参数:
```java
interface Processable {
void process();
}
class A implements Processable {
//...
}
class B implements Processable {
//...
}
void process(Processorable obj) {
obj.process();
}
```
在这种情况下,函数虽然接受的是`Processable`接口的实例,但实际上可以处理`A`和`B`类的实例。
阅读全文