从头认识java-6.6 final(3)-方法
2015-11-03 22:33
483 查看
这一章节我们来说一下final修饰的方法。
1.final与public
其实,使用final修饰方法,只不过就是不想继承的时候被修改。
一般我们继承的时候都可以覆盖public的方法,如下:
package com.ray.ch06;
public class Sub extends Father {
@Override
public void say() {
}
}
class Father {
public void say() {
}
}
上面的代码我们在sub里面覆盖重写了say方法。
但是如果我们使用final修改方法,在sub里面就不可以重写。
package com.ray.ch06;
public class Sub extends Father {
// @Override
// public void say() {//抛异常
// }
}
class Father {
public final void say() {
}
}
2.final与private由于private方法天生就不可以被重写,因此,private方法都是默认有final修饰的。
package com.ray.ch06;
public class Sub {
private final void say() {
System.out.println("method say");
}
private final void say(int id) {
System.out.println("method say");
System.out.println("id:" + id);
}
public static void main(String[] args) {
Sub sub = new Sub();
sub.say();
sub.say(2);
}
}
输出:method say
method say
id:2
3.综合
我们下面再举一个例子,里面包含了public和private的方法。
package com.ray.ch06;
public class Sub extends Father {
public final void say() {
System.out.println("method say");
}
public static void main(String[] args) {
Sub sub = new Sub();
sub.say();
Father father = new Sub();
}
}
class Father {
private final void say() {
System.out.println("method say");
}
}
乍看上去,以为sub重写了say,但其实没有,因为在father里面say是private,对外不公开,即便是子类,那么,对于子类的say而言,就不是覆盖重写father的say,因此,在引用Sub类型来new的时候,可以调用say方法,但是向上转型为father的时候,却不可以。
总结:这一章节主要讨论了final与private或者public方法结合时候的应用。
这一章节就到这里,谢谢。
-----------------------------------
目录
1.final与public
其实,使用final修饰方法,只不过就是不想继承的时候被修改。
一般我们继承的时候都可以覆盖public的方法,如下:
package com.ray.ch06;
public class Sub extends Father {
@Override
public void say() {
}
}
class Father {
public void say() {
}
}
上面的代码我们在sub里面覆盖重写了say方法。
但是如果我们使用final修改方法,在sub里面就不可以重写。
package com.ray.ch06;
public class Sub extends Father {
// @Override
// public void say() {//抛异常
// }
}
class Father {
public final void say() {
}
}
2.final与private由于private方法天生就不可以被重写,因此,private方法都是默认有final修饰的。
package com.ray.ch06;
public class Sub {
private final void say() {
System.out.println("method say");
}
private final void say(int id) {
System.out.println("method say");
System.out.println("id:" + id);
}
public static void main(String[] args) {
Sub sub = new Sub();
sub.say();
sub.say(2);
}
}
输出:method say
method say
id:2
3.综合
我们下面再举一个例子,里面包含了public和private的方法。
package com.ray.ch06;
public class Sub extends Father {
public final void say() {
System.out.println("method say");
}
public static void main(String[] args) {
Sub sub = new Sub();
sub.say();
Father father = new Sub();
}
}
class Father {
private final void say() {
System.out.println("method say");
}
}
乍看上去,以为sub重写了say,但其实没有,因为在father里面say是private,对外不公开,即便是子类,那么,对于子类的say而言,就不是覆盖重写father的say,因此,在引用Sub类型来new的时候,可以调用say方法,但是向上转型为father的时候,却不可以。
总结:这一章节主要讨论了final与private或者public方法结合时候的应用。
这一章节就到这里,谢谢。
-----------------------------------
目录
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统