zoukankan      html  css  js  c++  java
  • 从头认识java-6.6 final(3)-方法

    这一章节我们来说一下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方法结合时候的应用。


    这一章节就到这里,谢谢。

    -----------------------------------

    目录




    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    音频算法之我思
    图像去模糊算法 循序渐进 附完整代码
    音频算法之小黄人变声 附完整C代码
    RocketMQ(2)---核心概念、特性、使用等
    RocketMQ(1)---架构原理及环境搭建
    RabbitMQ(2)---高级使用
    面试问题---JAVA程序CPU占用过高怎么定位
    RabbitMQ(1)---基本概念及简单demo
    JUC(4)---java线程池原理及源码分析
    JUC(3)---CountDownLatch、CyclicBarrier和AQS
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944455.html
Copyright © 2011-2022 走看看