接口成员变量

今天面试被问到接口的成员变量是怎么定义的。。。。。。。

整个人都懵了,what???,3年的开发,我竟然没有定义过接口成员属性,其实源码里有很多很多,但是你看不到的是他默认的修饰符

举个例子:spring事务的隔离级别就有

图片里显示的你没有看错,和普通类定义成员变量一样,如果你这样想就错了,看起来是一样,但是编译后就不是这样的,接下来让我们反编译之后再来看看

1,普通类定义成员变量

1.1,普通类反编译

2,接口定义成员变量

2.2,接口反编译

 

总结:在代码层面,我们看到的是同样的定义,但是反编译之后,接口和普通类的成员变量却不一样了,接口成员变量默认是public static final 来修饰的。

小思考:普通类的成员变量,初始化是在构造函数里完成的,为什么呢?当做你们的任务去探究一下喽

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常感谢您对ChitGPT的使用。关于您的问题,我可以回答。 根据您的需求,我可以给出以下实现思路: 1. 定义接口:IJumping 成员方法:jump() 2. 定义抽象动物类(Animal): 变量:姓名、年龄; 构造方法:无参、全参; 成员方法:get/set方法,eat() 3. 定义具体猫类(Cat),继承动物类,实现跳高接口 成员变量:可爱度; 构造方法:无参、全参; 成员方法:重写eat(){…},重写jump(){…} 4. 定义具体狗类(Dog),继承动物类,实现跳高接口 成员变量:体重; 构造方法:无参、全参; 成员方法:重写eat(){…},重写jump(){…} 5. 定义测试类(TestAnimal):编写单元测试分别来实例化猫和狗来测试功能 实例化猫和狗对象,并调用它们的eat()和jump()方法,验证它们的功能是否正确。 具体的代码实现可以参考下面的示例: // 定义接口 interface IJumping { void jump(); } // 定义抽象动物类 abstract class Animal { private String name; private int age; public Animal() { } public Animal(String name, int age) { this.name = name; this.age = 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; } public abstract void eat(); } // 定义具体猫类 class Cat extends Animal implements IJumping { private int cuteLevel; public Cat() { } public Cat(String name, int age, int cuteLevel) { super(name, age); this.cuteLevel = cuteLevel; } public int getCuteLevel() { return cuteLevel; } public void setCuteLevel(int cuteLevel) { this.cuteLevel = cuteLevel; } @Override public void eat() { System.out.println(getName() + "正在吃鱼..."); } @Override public void jump() { System.out.println(getName() + "正在跳高,可爱度:" + getCuteLevel()); } } // 定义具体狗类 class Dog extends Animal implements IJumping { private int weight; public Dog() { } public Dog(String name, int age, int weight) { super(name, age); this.weight = weight; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } @Override public void eat() { System.out.println(getName() + "正在啃骨头..."); } @Override public void jump() { System.out.println(getName() + "正在跳高,体重:" + getWeight()); } } // 定义测试类 public class TestAnimal { public static void main(String[] args) { // 实例化猫 Cat cat = new Cat("小花", 2, 5); System.out.println(cat.getName() + "今年" + cat.getAge() + "岁,可爱度:" + cat.getCuteLevel()); cat.eat(); cat.jump(); // 实例化狗 Dog dog = new Dog("大黄", 3, 30); System.out.println(dog.getName() + "今年" + dog.getAge() + "岁,体重:" + dog.getWeight() + "kg"); dog.eat(); dog.jump(); } } 在上述示例,我们定义了IJumping接口和Animal抽象类,然后实现了具体的猫和狗类,并在测试类进行单元测试。您可以根据上述思路,自己手动实现一遍来加深理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值