当前位置: 首页 > 知识库问答 >
问题:

Java接口和类实例[重复]

孙修贤
2023-03-14

我已经创建了一个接口并编写了实现。在我的主类中,我为接口“interf5”创建了实例,也为实现类“Demo3”创建了实例。

这两个实例'i'有什么区别

请在下面找到我的代码。

interface interf5 {
    public int getLength(String s);
}

class Demo3 implements interf5 {
    public int getLength(String s) {
        return s.length();
    }
}

public class WithoutLambdaDemo3 {
    
    public static void main(String args[]) {
        interf5 i=new Demo3(); // What is the difference between instance 'i' and instance 'd'
        Demo3 d=new Demo3();
        System.out.println("String length -->"+i.getLength("Hello World"));
        System.out.println("String length -->"+d.getLength("Hello World"));
    }

}

共有2个答案

况安然
2023-03-14

将某个东西初始化为interf5比用Demo3初始化更通用。例如,如果您有另一个类:

class FunClass implements interf5 {
    public int getLength(String s) {
        return 7;
    }
}

做一些像

public class WithoutLambdaDemo3 {
    
    public static void main(String args[]) {
        interf5 i=new Demo3(); // What is the difference between instance 'i' and instance 'd'
        Demo3 d=new Demo3();
        System.out.println("String length -->"+i.getLength("Hello World"));
        System.out.println("String length -->"+d.getLength("Hello World"));
        i = new FunClass();
        System.out.println("String length -->"+i.getLength("Hello World")); // Now returns 7 instead of the actual length
    }
}

但如果要将Demo3对象重新指定为FunClass,则会出现错误,因为它们被识别为两个不同的对象。

希望这有帮助!

曾奇略
2023-03-14

以非常简单的方式:

通过interf5,您只能访问界面中定义的方法。通过d,您可以访问Demo3和界面中定义的所有方法。

我建议你读一些关于

  • Java继承
  • 多态性
  • 静态数据类型
  • 动态数据类型

这里有一个比你更好的例子:

interface interf5 {
    public int getLength(String s);
}

class Demo3 implements interf5 {
    public int getLength(String s) {
        return s.length();
    }
    public String getHelloWorld(){
   
    return "Hello World"
    }
}

public class WithoutLambdaDemo3 {
    
    public static void main(String args[]) {
        interf5 i=new Demo3(); // What is the difference between instance 'i' and instance 'd'
        Demo3 d=new Demo3();
        System.out.println(i.getHellowWorld()); //This not work
        System.out.println(d.getHellowWorld()); //Returns Hello World
    }

}
 类似资料:
  • 本文向大家介绍Java接口和抽象类实例分析,包括了Java接口和抽象类实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java的接口和抽象类。分享给大家供大家参考。具体分析如下: 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是

  • 我有两个方法和抽象类的接口,它们实现了这个接口并从它重写了一个方法。我可以实例这个抽象类,而不重写接口的其他方法吗?或者我可以用具有另一个签名的方法替换此方法吗? UPD:谢谢你的回答,我真的在我的问题上犯了错误。我是否可以使用匿名类来扩展我的抽象类,而不重写来自实现的所有方法?我如何理解DragonK的回答,不,我需要创建类,这将是扩展抽象类和重写其他方法?

  • 本文向大家介绍Java接口和抽象类用法实例总结,包括了Java接口和抽象类用法实例总结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java接口和抽象类用法。分享给大家供大家参考,具体如下: 接口 1 因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但可以实现多个接口,接口本身也可以继承多个接口。 2 接口里面的成员变量默认都是public static final类型

  • 但是,我也看到了一种奇怪的方法来重写接口方法: 3.子类只实现接口,但由父类重写接口中的方法: 覆盖接口方法的第三种方法在android框架源代码中非常常见,例如: 这样设计的原因是什么?

  • 本文向大家介绍Java中的接口和抽象类用法实例详解,包括了Java中的接口和抽象类用法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java中的接口和抽象类用法。分享给大家供大家参考,具体如下: 在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类往往用来表

  • 问题内容: 在面试中,有人问我以下问题。我试图回答这个问题,但是我想确切回答这个问题。 如果我可以将Abstract类模拟为Interface,为什么Java提供了Interface? 这意味着如果在Abstract类中我可以将所有方法标记为abstract,然后abstract类将用作接口,那么为什么我需要接口。 谁能简单地解释一下我。 问题答案: 这是一个非常标准的面试问题。答案是:因为您可以