类 接口用法概述 +练习instance of

本文深入探讨了接口类的并列关系,包括jdk8.0前后的接口特性变化,如静态方法、默认方法的引入,以及接口与类、接口间的关系处理。详细解析了同名函数或属性冲突的解决方案,提供了丰富的代码示例。

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

接口 类 并列关系

接口(规范)

jdk8.0以前

  • 属性均默认为 public static final
  • 函数均默认为 public abstract 所以不能有函数体 接口的函数通过类的实现覆盖来使用
  • 接口与接口之间可以继承,且可以多继承 这时继承关键字是 extends 而不是 implements (含有构造器的stuff只能单继承,不含的都可以多继承)

jdk 8.0以后

  • 可以有静态方法 public static 1.只能被接口本身调用且继承接口的子类也不行
  • 默认方法 public default(预设,默认)
    1.只能通过实现类的对象手动来调用 2.可以被子类重写 3. !!!不同于代码块 (类的对象创建时自动被调用)

class person
{
int x=1;
}
interface example
{
int x=0;
}
class doctor extends person implements 接口1,接口2,接口3{
函数实现体
// person的x:
super.x
//example的x:
example.x //默认全局静态变量

}
同名函数或属性冲突时
1.若接口与父类出现同名函数,不会报错,且默认优先调用父类函数

2.同名函数不同于同名属性,若出现指向不明的同名属性,会报错

3.若继承多个接口,且不同接口中出现同名函数,会有冲突
解决办法:在实现类(子类)中重写函数才行

在子类中调用父类的同名函数:
super.function();

在子类中调用接口的默认函数 若是此默认函数与父类同名就需要用到下面的调用方式
!!!!!接口.super.function();

public class first
{


    public static void main(String[] args)
    {
        comparecircle one=new comparecircle(3.6);
        comparecircle two=new comparecircle(3.9);
        circle three=new circle(2.4);
        Object check=new comparecircle(2.4);           //尽管在这里进行隐示转换,但是下面的比较是将原类型与comparecircle比较,因此返回true
        boolean master=check instanceof comparecircle;   //instanceof 使用的范围局限于 类类型   左边必须是右边对象或子类的实例才是true,
                                                  //类似于只能说儿子像爸爸,不能说爸爸像儿子  // 左边是右边对象的父类实例返回是false!
        System.out.println(master);
        System.out.println("\t where are you ?"+one.comparetosth(two));

    }
}
----circle类----
public class circle {
    private Double circle;
    public circle(Double circle){
        this.circle=circle;
    }

    public Double getCircle() {
        return circle;
    }
}
---comparecircle----
public class comparecircle extends circle implements compareto {

    public comparecircle(Double circle) {
        super(circle);
    }

    @Override
    public int comparetosth(Object sb) {    //传参处 实现多态性,若需调用子类特有函数,记得进行强制转换后方能使用
        if (this==sb)
            return -3;
        else if (sb instanceof  comparecircle)
        {                                  
            circle example=(circle)sb;   //一定要实现类型转换,因为穿对象时被隐示转换为object对象,否则无法调用circle的扩展行为
            return this.getCircle().compareTo(example.getCircle());
        }
        else
        {
           return -2;
        }
    }
}
----compareto---
public interface compareto {
   public int comparetosth(Object sth);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值