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) {
        }

    }

  • 相关阅读:
    布隆过滤器
    string.ToString("X")的含义,转换为16进制
    Stream.Write()和Stream.Read(), Stream.Flush的作用,待学习
    linux查看CPU,内存使用情况
    HttpContext.Current.Request.InputStream
    程序员常去的10个顶级开发社区
    JavaScript 对象初探
    PHP – 架構設計 Data Access Layer 篇
    如何用 JavaScript 动态呼叫函数
    PHP – EasyUI DataGrid 资料存的方式
  • 原文地址:https://www.cnblogs.com/shadow-shine/p/9614072.html
Copyright © 2011-2022 走看看