zoukankan      html  css  js  c++  java
  • java覆写

    1、覆写:子类定义了与父类中同名的方法,但是方法覆写时,必须考虑到权限,即子类覆写的方法不能拥有比父类方法更加严格的访问权限。

    public>default>private

    class A{
        public void fun(){
            System.out.println("A");
        }
    }
    
    class B extends A{
        public void fun(){
            System.out.println("B");
        }
    }
    public class ExtendsDemo1 {
        public static void main(String[] args) {
            B b = new B();
            b.fun();
        }
    }

    输出结果

    B

    2、覆写结果的分析要素:

    • 观察实例化的是哪个类
    • 观察这个实例化的类里面调用的方法是否已经覆写过,如果没有覆写则调用父类中的方法。
    class A{
        public void fun(){
            print();
        }
        private void print(){   //子类不可见
            System.out.println("A");
        }
    }
    
    class B extends A{
        public void print(){
            System.out.println("B");
        }
    }
    public class ExtendsDemo1 {
        public static void main(String[] args) {
            B b = new B();
            b.fun();
            b.print();
        }
    }

    输出结果:

    A
    B

    3、由子类调用父类中被子类覆写的方法,加上super.方法();

    class A{
        public void fun(){
            print();
        }
        public void print(){
            System.out.println("A");
        }
    }
    
    class B extends A{
        public void print(){
            super.print();
            System.out.println("B");
        }
    }
    public class ExtendsDemo1 {
        public static void main(String[] args) {
            B b = new B();
            b.fun();
        }
    }

    运行结果:

    A
    B

    4、

     

     5、属性的覆盖

    class A{
        int age =10;
        public void fun(){
            print();
        }
        public void print(){
            System.out.println("A");
        }
    }
    
    class B extends A{
        int age = 100;
        public void print(){
            super.print();
            System.out.println(this.age);
            System.out.println(super.age);
        }
    }
    public class ExtendsDemo1 {
        public static void main(String[] args) {
            B b = new B();
            b.fun();
        }
    }

    输出结果:

    A
    100
    10
  • 相关阅读:
    测试框架Mockito使用笔记
    Apache-Shiro+Zookeeper系统集群安全解决方案之缓存管理
    C#学习笔记-数据的传递以及ToolStripProgressBar
    如果我们不曾相遇
    C#学习笔记-数据的传递(公共变量)以及Dictionary
    C#学习笔记-icon托盘图标的简单知识
    C#学习笔记-Windows窗体基本功能(Login登录界面)
    CellSet 遍历
    DevExpress PivotGrid 使用记录
    Funsioncharts 线图 破解
  • 原文地址:https://www.cnblogs.com/cathycheng/p/13158166.html
Copyright © 2011-2022 走看看