package com.finnal1;
/**
* 被final修饰的参数不可改变
* @author Administrator
*
*/
class Gizmo{
public void spin() {
System.out.println("我是可修改的参数");
}
}
public class FinalArgs {
void with(final Gizmo g) {
//g = new Gizmo();
}
void without(Gizmo g) {
g = new Gizmo();
g.spin();
}
/*void f(final int i) {
i++;
}*/
int g(final int i) {
return i+1;
}
public static void main(String[] args) {
FinalArgs fa = new FinalArgs();
fa.without(null);
fa.with(null);
}
}
package com.finnal1;
/**
* 被final修饰的方法
* @author Administrator
*
*/
class WithFinals{
private final void f() {
System.out.println("WithFinals.f()");
}
private void g() {
System.out.println("WithFinal.g()");
}
}
class OverridingPrivate extends WithFinals{
private final void f() {
System.out.println("OverridingPrivate.f()");
}
private void g() {
System.out.println("OverrideingPrivate.g()");
}
}
class OverridingPrivate2 extends OverridingPrivate{
public final void f() {
System.out.println("OverridingPrivate2.f()");
}
public void g() {
System.out.println("OverrideingPrivate2.g()");
}
}
public class FinalPrivate{
public static void main(String[] args) {
OverridingPrivate2 op2 = new OverridingPrivate2();
op2.f();
op2.g();
OverridingPrivate op1 = op2;//向上转型,但是基类的方法被private关键字修饰
//op1.f();
//op1.g();
WithFinals wf = op2;//向上转型,但是基类的方法被private关键字修饰
//wf.f();
//wf.g();
}
}
//输出结果:OverridingPrivate2.f()
//OverrideingPrivate2.g()