java中的成员变量可以是接口型的吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的成员变量可以是接口型的吗相关的知识,希望对你有一定的参考价值。

例如 class A

private BB bb;//其中BB是一个public的interface;


这样定义可以吗?我自己写了个程序这样定义的。但是没出错。但是感觉有点不对似的

可以。往往采用接口型来实现多态。

1、定义一个接口TestFace

public interface TestFace//定一个接口
   void make();//定义一个接口方法

2、定义一个类MyClass,里面包含一个接口型变量

public class MyClass//定义一个类
    TestFace tf;//定义一个接口型变量tf
    public MyClass(TestFace tf)//构造函数初始化接口型变量tf
       this.tf = tf;
    
    public work()  //函数调用
       this.tf.make();//实际的接口型类实例。
    

3、定义2个类,实现接口TestFace 

public class C1 implements TestFace//定一个类C1实现接口TestFace
    public void make()//实现接口的方法make
       System.out.println("c1");//打印c1
    

public class C2 implements TestFace//定一个类C2实现接口TestFace
    public void make()//实现接口的方法make
       System.out.println("c2");//打印c2
    

4、使用接口变量

TestFace tf1 = new C1();//实现一个类实例C1
TestFace tf2 = new C2();//实现一个类实例C2
MyClass mc = MyClass(tf1);//定义一个MyClass的类实例,使用tf1
MyClass mc2 = MyClass(tf2);//定义一个MyClass的类实例,使用tf1
同一个类的work,能够实现不同的打印内容
mc.work();
mc2.work();

参考技术A 这样确实没错,不过推荐不要这么用,接口一般都是用来被继承来实现其规定的“标准”,这样才符合面向对象的思想。(思想很重要的,你以后会知道,早点培养比较好)本回答被提问者采纳 参考技术B 接口貌似是可以作为对象类型的,编译不会报错。但bb 需要实例化才能使用,否则调用时会报NullPointException。 参考技术C 可以。但实例化时要用它的实现类。
例如:IUserDao iUserDao = new IUserDaoImpl();
(IUserDao是接口,IUserDaoImpl是它的实现类)

OJ赛制分类

本文为了刷力扣题目更加得心应手,而写的OJ的分类,不至于看到接口型OJ题目而一脸茫然。

OJ的分类于整理:

  1. IO型
  2. 接口型

那么什么是IO型,什么是接口型呢?

——————

IO型:

大部分考试,包括考研上机,都是IO型OJ题。

 

接口型:

————

  1. 不需要写头文件、主函数等。
  2. 提交了以后,会跟oj服务器上它准备好的代码合并,再编译运行。
  3. 测试用例:通过参数传过来。
  4. 结果:一般通过返回值拿的,也有可能是输出型参数。

在力扣平台上的题目,大多都是接口型的OJ题,如:剑指offer56

以上是关于java中的成员变量可以是接口型的吗的主要内容,如果未能解决你的问题,请参考以下文章

java中的成员变量类变量,成员方法类方法 属性和方法区别

java中的成员变量和局部变量的区别

java接口中的成员方法和成员变量

Java Review (八面向对象----成员变量和局部变量)

Java Review (八面向对象----成员变量和局部变量)

Spring框架中的单例bean是线程安全的吗?