private与static的方法是不是默认为final的测试
来源:互联网 发布:李修贤 周星驰 知乎 编辑:程序博客网 时间:2024/05/21 13:30
读了thinkinjava后,说private与static的方法是final的,只是把final关键字给隐藏了。自己测试了下,
public class Father {private void privateSay(){System.out.println("father private say!");}public static void staticSay(){System.out.println("father static say");}public void publicSay(){System.out.println("father public say");}public static void main(String[] args) {Father f = new Sun();f.privateSay();f.publicSay();f.staticSay();}}
public class Sun extends Father{@Overridepublic void publicSay() {super.publicSay();System.out.println("sun public say!");}private void privateSay(){System.out.println("sun private say!");}public static void staticSay(){System.out.println("sun static say");}public static void main(String[] args) {Father f = new Sun();//f.privateSay(); //-->编译错误f.publicSay();f.staticSay();}}
father类中打印出
father private say!
father public say
sun public say!
father static say
sub类打印出
father public say
sun public say!
father static say
可以看出private与static的方法是默认带有final的,是不能被 重载的,而只有非final的方法是才是后期绑定(执行期绑定)。所以private与static方法没有被重写。
而在Sun类内调用privateSay方法编译时报错 也就 验证了private方法是在前期绑定(编译期绑定)的,报错是因为privateSay是父类的私用方法,就算在子类内重新写了一个同名的方法也不能调用,这样才能保证父类中的私有方法不被覆盖。
staticSay是public但是final所以不能覆盖,最终打印出来的是:father static say。
再说下interface中的变量
public interface StaticVar {String var = "interface var";}
public class StaticVarImp implements StaticVar {String var = "implements var";public static void main(String[] args) {StaticVar sv = new StaticVarImp();System.out.println(sv.var);}}
打印出来的是
interface var
接口中的成员变量 默认 是写成public static final的
public:接口是要被其它类实现的所以要用public关键字。
static:每个实现类都公用这个变量,static后内存中就只有一个变量。
final: 不能说在打印sv.var,会因为不能的实现,打印出来的值不同。这样就失去了接口的意义。
接口是概念级抽象,它不表示任何实体,而属性是用于表示某个对象特征,如果接口拥有非静态属性,那岂不违背了接口高度抽象的原则。
- private与static的方法是不是默认为final的测试
- static private 与 final 的用法总结
- static private 与 final 的用法总结
- static private 与 final 的用法总结
- private修饰的成员方法默认是final型的?
- static private 与 final 的用法总结(转)
- 构造器中可要调用本类的方法,但要调用的非static方法必须声明为private或final
- public,protected,private,static,final的区别
- private,static,final标识的相关总结
- public,private,final,static的区别
- private static final long serialVersionUID的作用
- private static final long serialVersionUID的作用
- private static final long serialVersionUID的作用
- 抽象方法不能为private,final或者static,为什么?
- java中的常量,是不是必须定义为static final的呢
- private final static ×× 和private static final xx 两者修饰变量的区别
- 空白final final方法 final与private
- java 反射调用 私有构造类中 private static final 属性的方法
- mysql插入表中的中文字符显示为乱码或问号的解决方法
- FBS:欧元区风险因素加剧,欧元扩大跌幅
- ubuntu 9.10安装 pppoe server
- 百度笔试题:负数在前 正数在后(奇数在前,偶数在后)
- 12款很棒的浏览器兼容性测试工具推荐
- private与static的方法是不是默认为final的测试
- 【转】使用debootstrap做一个属于自己的系统(zh)
- 关于自身表的外键触发器实现
- 如何解决http封包中gzip编码的html
- C++五大内存分区及区别
- PDF to Word 转换工具
- 【转】Linux 下 OpenVPN 安装和 Windows OpenVPN GUI 安装笔记
- 初学java
- 【转】最简化的Ubuntu 10.04下Redmine部署方法