接口和父类具有同名属性、方法重载

本文探讨了Java中接口与父类属性冲突的解决办法、方法重载的规则及特殊情况,特别是泛型方法在参数类型擦除后的处理方式。通过实例说明了如何正确实现方法重载以及在使用泛型时可能出现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.ArrayList;
import java.util.List;

/**1.当接口和父类中具有相同的属性名,而自己没有这个变量又需要使用时,需要指定具体使用父类中的成员变量还是接口中的成员变量
 * 2.方法前面只考虑方法的名称、参数类型、参数个数、参数顺序, 不考虑方法的返回类型。 也就是说不能用返回类型来区分重载方法
 * 3. 泛型作为方法的参数时,会进行类型的擦除。 例如 List<String> 和 List<Integer>对方法计算签名来说,其和List是一样的作用
 * 4. 重载的两个方法参数一个类型父类类型,一个为子类类型, 则在方法调用时传入声明类型和实际类型都为子类类型的实参时,会抱编译错误,
 *    因为两个重载的方法都能匹配这个调用。 也就是说调用重载方法时,实参可以自动匹配形参为父类类型的方法。
 * Created by liaoqianwen on 2016/7/6.
 */
public class InterfaceExtendsTest {
    public static void main(String[] args){
        List list = new ArrayList<>();
        ArrayList list2 = new ArrayList<>();
        FanXingTest obj = new FanXingTest();
        obj.func(list);
//        obj.func(list2);  
    }
}


interface Jiekou{
    static final int a =100;

    public void func1();
}

class Class2 {
    static final int a =1000;
    static {
        int c = 2;
        bb =200;
    }
    static int b = 1;
    static int bb =2;
}
class Class1 extends Class2 implements Jiekou{

    public void func1(){
        System.out.println(Class2.a);
    }
}

// 泛型测试
class FanXingTest{
    public String func(List<String> list){
        System.out.println("String");
        return "liao";

    }

    public boolean func(ArrayList<Integer> list){
        System.out.println("boolean");
        return true;

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值