Java子类不可调用接口中已实现的方法吗?

1、这是接口的代码

public interface TestInterface {
    String interfacename = print1("接口");

     static String print1(String string) {
        System.out.println(string+"静态初始化");
        return "hello";

    };


}

2、这是子类的代码

public class ChildClass extends NormalTest implements TestInterface{
    public static String ChildName = print1("child");


    public ChildClass() {
        System.out.println("ChildClass construtor");
    }


}

然后发现报错了,是接口里面已经实现的方法只能在接口里面使用吗,不可以直接调用吗,还是要用到的话要重写?

0

2个回答

静态方法调用, 可以使用类名。 静态方法时直接跟类关联的, 子类调用父类的静态方法也是如此

public static String ChildName = TestInterface.print1("child");

另外, 子类不能重写父类的静态方法。 只是会隐藏父类的方法(即子类实例调用同样的静态方法, 该方法触发的是子类的方法。。如果类型是父类, 则调用父类方法)。。跟重写有本质的区别

0
weixin_37139197
阿进的写字台 回复qq_42569136: 亲, 回答正确就左上角点赞+采纳啊。。
8 个月之前 回复
qq_42569136
qq_42569136 好的,谢谢,想了下,明白了
8 个月之前 回复

接口中的静态方法不会被继承,你所做的操作就是调用子类的print方法,但是子类并没继承到这个方法,所以编译失败

0
qq_42569136
qq_42569136 好的,明白了,谢谢
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
接口默认方法
接口默认方法JDK8 中为什么有接口默认方法以前创建了一个接口,并且已经被大量的类实现。 如果需要再扩充这个接口的功能加新的方法,就会导致所有已经实现的子类需要重写这个方法。 如果在接口中使用默认方法就不会有这个问题。 所以从 JDK8 开始新加了接口默认方法,便于接口的扩展。接口中默认方法的规则1.默认方法使用 default 关键字,一个接口中可以有多个默认方法。 2.接口中既可以定义抽象方法...
Java8 接口中default方法带来的问题
接口中默认方法中的问题: 默认方法的出现,是为了方便 当所有实现类都需要添加某个方法时,在接口中能直接写实现过程。 但是,如果某个类,实现了两个接口,并且这两个接口有同名默认方法,那么这个类就无法判断是继承的是谁的类。 必须要在继承方法体中,声明继承的是哪个实现类的方法。 例如: A.super.test(); 这样就会将 C++中  多重继承中 的问题 再次引进 java。 接口不是一直...
接口中的默认方法
java8在接口中引入了默认方法,通过在方法前加上default关键字就可以在接口中写方法的默认实现 在java8中我们可以用集合的stream方法对集合进行函数式处理,这个方法在java8之前是没有的,那么它是如何对该接口进行增强并且不影响之前的实现类的呢? 在Collection类中可以看到 /** * Returns a sequential {@code Str...
java 重写接口中的方法,为什么必须在前加public呢?
java中接口方法不管是否加了修饰符都是public。因此在实现的时候修饰范围不能缩小,只能是public。 比如: public interface A{//定义一个接口 void show();//没有修饰符,默认修饰符是public public void show1();//显示定义修饰符是public } public class A1 implements A{
php 子类无需实现接口的全部方法的实现方式
思路:使用抽象类实现接口的方法,因为抽象类中允许存在接口的抽象方法。 理解demo:  interface biology {          public function eat();     public function move();  }   abstract class animal implements biology  {        abstract public ...
Java接口中的方法和常量
接口中常见的成员有两种:全局常量 抽象方法 若没有写public、static、final、abstract 会自动补齐
Java9新特性之——接口中的私有方法
Java9新特性之——接口中的私有方法
java接口中的default方法
在java8以后,接口中可以添加使用default或者static修饰的方法,在这里我们只讨论default方法,default修饰方法只能在接口中使用,在接口种被default标记的方法为普通方法,可以直接写方法体。实现类会继承接口中的default方法如果接口A中有default方法:public interface A { public default void a(){ System...
接口中的静态方法不能被实现类继承和子接口继承,但是接口中的非静态的默认方法可以被实现类继承。
。。。
java8增加的接口中默认方法
前言 最近在工作中的一次小修改让自己应用到了java8中的新特性:接口默认方法,这里去简单记录下。在java8之后可以在接口定义方法的实现,成为default方法,类似于Scala中的trait。比如在Iterable接口中新增了foreach默认方法: /** * Performs the given action for each element of the {@code Iterable...
protected修饰符详解-源于Cloneable接口
Cloneable接口是一个空接口,仅用于标记对象,Cloneable接口里面是没有clone()方法,clone()方法是Object类里面的方法,默认实现是一个Native方法。今天在做对象拷贝的时候发现一个问题,某类实现Cloneable接口后,还要重新实现Object类中的clone()方法: 感觉有点奇怪,这个类里也没做什么特殊的操作啊,就是调用一下父类的clone方法:
Java错题总结
继承,多态下面描述函数重写错误的是( BC )    CA.  要有子类继承或实现B.  子类方法的权限必须大于等于父类的权限C.  父类中被private权限修饰的方法可以被子类重写D.  子类重写接口中的抽象方法,子类的方法权限必须是public的默认的权限是低于public的,默认权限只能被本包极其子类所访问。public可以被其他任意对象调用。private私有的方法无法被重写子类方法的权...
关于java8接口中默认方法的使用
java8在接口中引入了默认方法,通过在方法前加上default关键字就可以在接口中写方法的默认实现,有点类似于C++中的多继承,但是当多个接口或父类中有相同签名的方法时,会引发一些问题,经过实验得出如下结论: 1.当继承的父类和实现的接口中有相同签名的方法时,优先使用父类的方法。 2.当接口的父接口中也有同样的默认方法时,就近原则调用子接口的方法。 3.当实现的多个接口中有相同签名的方法时
接口中的static方法前要加default吗?static方法可以由实现这个接口的类来实现吗?
接口中static方法前不用加default,默认是default,那么说明,static前是默认default,那么接口中的static方法不能由实现这个接口的类来实现。。。。 下图表明,接口中的static前面的标识符默认是default,接口中不是静态的其它方法默认是public static
java中子类继承父类和实现接口有同名方法怎么处理
Java是一门单继承语言,但是,在子类的继承关系中,会存在父类和接口有同名方法的情况,这种情况该怎么处理呢? 我们来一步步验证: 1.子类继承父类,实现接口,父类和接口有同名方法 public interface MyInterface { void test(); }public class Father { public void test() { System.out.prin
Java8中的静态接口方法
一.简述1.JDK 8增加了可以在接口中定义一个或多个静态方法的规则。2.由于它是静态的,所以由接口定义的静态方法可以独立于任何对象被调用。因此,调用静态方法不需要实现接口。3.静态接口方法不被实现类或接口继承。 二.示例创建一个带有静态方法的接口:package insping;public interface InterfaceWithStaticMethod { static Stri
Java中接口的实现与方法的调用
package four; //定义一个接口 interface Animals4{ int ID=1;//定义全局变量 //定义抽象方法 void breathe(); //定义一个默认方法 default void getType(String type) { System.out.println("该动物属于:"+type); } //定义一个静态方法 stat...
对于接口的静态方法,接口可以不定义吗?可以由实现类定义吗?这样还可以用静态方法吗??
。。
当父类和接口有相同的方法时
                     忽然脑海中出现一个问题,当父类和接口有相同的方法时,去调用这个接口时,会 出现什么情况?                      于是写了例子 public class Parent { public void run(){ System.out.println(100); } } public interfa...
【小家java】java8中接口方法引发的思考(默认方法、static静态方法)
1、概述 java8可以说是jdk版本的一次重大升级,给我们也带来了非常多的新特性,而本文就针对于java8中很重要的新特性之一:接口方法。来讨论一下平时使用中可能遇到的问题 2、栗子 大家都知道,在jdk8之后,接口里面咱们都可以写具体的方法了,但这方法比较特殊,只能是静态方法或者默认方法。这又让我们有更好的设计,可以设计出更加高内聚的代码,更加方便的管理封装。 3、使用场景 匿名内部...
接口是否可以有实现方法
首先看到这个标题,我想很多跟我一样的初学者是蒙B的,毕竟百度百科对Java接口是这么定义的:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。很多书上对接口都是这么命名的,所以我们也就引以为真。直到我用开发工具翻源码,无意间翻看到java.util.List源码时,我看到Li
利用Java的Properties类读取配置文件信息
利用Java的Properties类读取配置文件信息 在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的。比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据库那么IP,数据库名称,表名称,数据库主机等信息是我们本地的,要使得这个操作数据的模块具有通用性,那么以上信息就不能写死在程序里。通常我们的做法是用配置文件来解决。 各种语言都有自己所支持的
连上7天班,什么感觉?
周一的时候大家都感叹,今天应该周三了 周二的时候感觉今天应该周四了, 周三的时候觉得今天应该是周五了, 周四。。应该在家里休息了。。。 好累啊,真的好累啊。。。 多上两天班比想象中的还要伤啊。。。 终于周五了,不知道你们什么感觉。 image.png ...
Java8支持在接口中的实现方法
Java8的新特性 接口: public interface Test8Interface { default String hello(String hello){ hello = "HELLO" + hello; return sayHi(hello); } String sayHi(String hello); } 实现类A: p...
Java的接口中是否可以使用静态方法
接口是极度抽象化的类,接口的所有方法都是抽象的,并没有具体的实现。而抽象方法是不能使用static进行修饰,有static的方法是不能override的,所以这样定义接口才有意义。但接口中的变量也都是static  final类型的。 从另外一个方面理解,静态的变量和方法在内存种分配了空间, 而接口只是类的表现形式,是没有分配空间的。 但是需要注意的是Java8引入了一种新特性,为了使接口具有
Java接口中的成员变量为什么必须是public static final?
  必须是final的,否则多个类全继承他后,每个人都改,那么听谁的?   http://shaomeng95.iteye.com/blog/998820  
接口中私有方法
在JAVA9中,接口里可以写执行体的方法有两种。 1.默认方法 格式:public default 返回值 方法名(){} 2.静态方法 格式:public static 返回值 方法名(){} 私有方法: 当我们在一个接口里写多个默认方法或者静态方法的时候,可能会遇到 程序重复的问题。我们可以把这些重复的程序提取出来,创建一个新的方法, 用private进行修饰,这样就创造了一个只有接口可以调用...
一个类实现一个接口,可以重写接口中方法的参数类型吗?
答:不可以。 接口中定义的都是抽象方法,没有实现,所以当有接口被继承后,必须实现接口类中的所有构造方法,这个过程就是重写接口方法,之后可以重新填写方法内容,但是方法的名,参数类型和个数、参数返回值类型不能改变。
实现接口中的方法,方法前没有加public
实现接口的方法一定要声明为public,因为接口中定义的方法都是默认为public的。。 在类的abstract方法重写,也存在这个问题,访问权限要不小于被重写的方法。被重写的方法不能是private。。。。。。
在接口中增加构造方法
    public class VoipBLL     {         private IVoipAnalysis voipAnalysis;         //从config里取得关键字         string voipConfig = "BluePoint";         //构造方法.判断品牌         public VoipBLL()         {   ...
Java中接口中的方法定义规则
Java接口中的方法定义规则最近在做某个公司校招的笔试的时候,遇到了如下一个题:题目如下:(多选题)请选择以下接口定义正确的方法()A:public static void main (String[] args);B:private void test();C:public void test2();D:static void test3(){};正确答案为:C D。原因为:A没有提供默认实现,B
JDK1.8更新的有关接口的内容,接口里面可以有方法体,lamdba语法
//JDK 1.8以后,方法可以有方法体,要加上default //1.8以后可以有静态方法 public interface Drawable { int a = 10; void draw(int i); default void method(){ System.out.println("default修饰"); } static v
关于实现接口中抽象方法的小感悟
最近在重温IO流以及对集合中元素升降序排序的过程中,频繁使用到了用匿名内部类去创建一个接口的子类对象并实现接口中的方法。 例如在使用排序的比较器接口(Comparator)以及File类中过滤文件的接口(FilenameFilter)时,通过查源码发现Comparator接口有两个方法需要被实现,其中一个是int compare(T o1, T o2);另一个方法是boolean equals(...
当一个方法只在父类中定义时,调用该方法时会使用父类中的属性
class Father { private String name = "Father"; public String getName() { return name; } } class Child extends Father{ private String name = "child"; public static void main(
实现接口中的方法
今天有人在群里问了一道Java题目:我看了一下不知道答案,遂谷歌之。 答案应该是D。 知识点:concrete类,不知道怎么翻译,就是可以直接实例化的类,必须实现它实现的接口中所有的方法。抽象类,可以只实现部分它实现的接口中的方法,剩下的部分让它的concrete子类去实现。 ...
匿名内部类就是重写父类或接口的方法
copy http://blog.csdn.net/cntanghai/article/details/6094481 使用匿名内部类课使代码更加简洁、紧凑,模块化程度更高。内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到。然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式:第一种,继承一个类,重写其方法;第二种,实现一个接口(可以是多个),实现...
Java在接口中使用关键字default和static
最近项目代码中用到了default和static这两个关键字,这里用到的地方是接口中。 default常用于接口中,正常情况下我们写接口的时候,方法是不能有方法体的,但是用了default关键字修饰方法之后,这个方法是可以有方法体的,看下面的代码: 1.创建一个BaseStu接口 public interface BaseStu { default void testDefault() ...
接口和父类具有同名属性、方法重载
import java.util.ArrayList; import java.util.List; /**1.当接口和父类中具有相同的属性名,而自己没有这个变量又需要使用时,需要指定具体使用父类中的成员变量还是接口中的成员变量 * 2.方法前面只考虑方法的名称、参数类型、参数个数、参数顺序, 不考虑方法的返回类型。 也就是说不能用返回类型来区分重载方法 * 3. 泛型作为方法的参数时,会进
接口中的默认方法也是默认为public的吗??
。。。。
java 8 接口中缺省方法与静态方法
java 8 接口中缺省方法与静态方法 java 8 新增了很多新的特性,包括lambda表达式,函数接口,方法引用,流,Optional 以及接口中的静态方法与缺省方法。 本文我们深入讨论如何使用接口中的static和default方法,并通过示例展示其应用场景。 为什么需要缺省方法 与正常接口方法一样,default方法默认为public,无需显示指定public修饰符。与正常方法不同,在方法...