黑马程序员技术交流社区

标题: 子类为什么不能用静态方法? [打印本页]

作者: 623927408    时间: 2016-9-22 10:20
标题: 子类为什么不能用静态方法?
[Java] 纯文本查看 复制代码
class TestA{ 
        public  TestA(){
System.out.println("A");
        }
}

class TestB extends TestA{
        public static TestB(){
                System.out.println("B");
        }
       
}

public class Test{
        public static void main(String[] args){
                TestB testB=new TestB();
        }
}



作者: 623927408    时间: 2016-9-22 10:21
---------- javac ---------- C:\Users\Administrator\Desktop\Test.java:8: 错误: 此处不允许使用修饰符static         public static TestB(){  不明白错误的原因,为什么不能用static

作者: 请原谅我笑出声    时间: 2016-9-22 10:34
继承来的方法不能用static修饰
作者: 623927408    时间: 2016-9-22 11:34
请原谅我笑出声 发表于 2016-9-22 10:34
继承来的方法不能用static修饰

应该是构造方法不能用static修饰
java中构造方法可以有任何访问的修饰符,public、private、protected或者没有修饰符 ,都可以对构造方法进行修饰。不同于实例方法的是构造方法不能有任何非访问性质的修饰符修饰,例如static、final、synchronized、abstract等都不能修饰构造方法。
解释:构造方法用于初始化一个实例对象,所以static修饰是没有任何意义的;多个线程不会同时创建内存地址相同的同一个对象,所以synchronized修饰没有意义;
构造方法不能被子类继承,所以final和abstract修饰没有意义。
作者: 读书可以当饭吃    时间: 2016-9-22 12:25
你这方法没有返回值,是构造方法,构造方法不能用static修饰的啊
作者: 边_城    时间: 2016-9-22 19:21
都是大神
作者: 飞儿-程序猿    时间: 2016-9-22 20:45
623927408 发表于 2016-9-22 11:34
应该是构造方法不能用static修饰
java中构造方法可以有任何访问的修饰符,public、private、protected或 ...

嗯嗯,你的很对, 构造方法确实不能被继承,这也是继承不能做到的
作者: hysnxdss    时间: 2016-9-22 21:47
623927408 发表于 2016-9-22 11:34
应该是构造方法不能用static修饰
java中构造方法可以有任何访问的修饰符,public、private、protected或 ...

楼主强势啊!解释的很全面
作者: 17721165644    时间: 2016-9-22 22:10
构造方法不能是静态的吧
作者: LShu    时间: 2016-9-22 22:52
哥们,子类中是可以用静态方法的啊,但是你这个子类中是在构造方法中使用的静态方法,那肯定是不行的,建议去看一下构造方法的特点以及他是有那些部分组成的..
作者: 梁程    时间: 2016-9-22 23:01
{:2_31:}        ...............................




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2