`
85977328
  • 浏览: 1871479 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java继承静态方法复写

 
阅读更多
最近和人交流,遇到了这样一个问题,就是继承当中,静态方法复写的情况。
如果在子类中,复写方法没有添加static关键字,则IDE会提示:This instance method cannot override the static method from T1
如果在子类中,复写方法与父类一致,此时若添加@Override注解,则IDE报错提示:The method print() of type T2 must override or implement a supertype method
但是一般人也没这么使用的,方法复写。只是记录下来,以便了解。

package com.chinaso.phl;

public class TestT {

	public static void main(String[] args) {
		T1 t = new T2();
		t.print();
		
		T2 t2 = new T2();
		t2.print();
	}

}


class T1 {
	public static void print() {
		System.out.println("super");
	}
}

class T2 extends T1 {

	public static void print() {
		System.out.println("this");
	}

}

输出
super
this
1
4
分享到:
评论
3 楼 mike.liu 2014-03-12  
yjc2020 写道
mike.liu 写道
静态方法,也称为类方法。不建议用对象去调用,而应该用类去调用。


直接T1.print() ?

是的。静态方法里面不能访问对象的成员的,只能访问静态成员。
不用对象去调用静态方法,可以避免误解,以为这个方法会访问对象。
反过来,对象方法是可以自由访问静态方法的。
2 楼 yjc2020 2014-03-12  
mike.liu 写道
静态方法,也称为类方法。不建议用对象去调用,而应该用类去调用。


直接T1.print() ?
1 楼 mike.liu 2014-03-12  
静态方法,也称为类方法。不建议用对象去调用,而应该用类去调用。

相关推荐

Global site tag (gtag.js) - Google Analytics