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
  • 相关阅读:
    负载均衡算法实现方式
    TCP三次握手和四次挥手
    深度解析Java内存原型
    缓存击穿、缓存穿透和缓存雪崩
    uni-app分包加载
    vuex的使用
    在web中打开exe程序并传参
    Vue 中引用高德地图
    .Net Core 从MySql数据库生成实体类 Entity Model
    vs2017 创建项目推送到Git上
  • 原文地址:https://www.cnblogs.com/cathycheng/p/13158166.html
Copyright © 2011-2022 走看看