zoukankan      html  css  js  c++  java
  • final修饰符(5)-final方法

      final修饰的类的方法不能被重写,例如如果父类不希望子类重写某个方法,则可以使用final修饰符修饰该方法

      在java的Object类里面有一个final方法:getClass(),因为Java不希望任何类重写这个方法,所有使用final方法封装起来,但对于该类提供的toString()和equals()方法,都允许子类重写,因此都没有用final修饰

    代码示例:

    package com.j1803.finalTest;
    public class FinalMethodTest1 extends Test{
        //编译错误
        public void show(){};
        public static void main(String[] args) {
        }
    }
    class Test{
        public final void show(){};
    }

      子类试图重写父类的final方法,编译错误

      对于一个private修饰的父类方法,因为其仅在当前类中可见,其子类无法访问该方法,所以子类无法重写该方法,如果在子类中定义了一个与父类private方法有相同方法名,参数列表相同,返回值相同的方法,

    也不是重写,只是定义了一个新方法,因此,即使使用final修饰一个private访问权限的方法,依然可以在其子类中定义与该方法具有相同方法名,相同参数列表,相同返回值类型的方法

    package com.j1803.finalTest;

    public class FinalMethodTest1 extends Test{
        //编译错误
        public void show(){};
        public static void main(String[] args) {
            // TODO Auto-generated method stub
        }
    }
    class Test{
        //修改public 为private
        private final void show(){};
    }

      final修饰的方法仅仅是不能被重写,并不是不能被重载

    package com.j1803.finalTest;
    public class FinalMethodTest1{
        public final void show(){};
        public final void show(Object obj){};
        public static void main(String[] args) {
        }

    }

  • 相关阅读:
    ArrayList LinkedList源码解析
    装饰者模式 Decoration
    互联网架构的三板斧
    HashMap 源码解析
    redis的安装配置
    DNS原理及其解析过程 精彩剖析
    深入解析策略模式
    浅析java内存模型--JMM(Java Memory Model)
    深入解析单例模式
    简单排序算法 冒泡排序 选择排序 插入排序
  • 原文地址:https://www.cnblogs.com/shadow-shine/p/9614072.html
Copyright © 2011-2022 走看看