zoukankan      html  css  js  c++  java
  • JAVA多态的理解

    //看如下代码:

    package thinking.in.java;
    public class PrivateOverride {
        private void f(){
            System.out.println("private f()");
        }
        private void ss()
        {
            System.out.println("this is a base class private method");
        }
        public void se()
        {
            System.out.println("this is a base class public method");
        }
        public final void sf()
        {
            System.out.println("this is a base class final method");
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
                PrivateOverride po=new Derived();
                po.f();
                po.ss();
                po.se();
                po.sf();
                ((Derived) po).sp();
                
                Derived dd=    new Derived();
                dd.f();
                dd.sp();
                dd.se();
                dd.sf();
        }
    
    }
    class Derived extends PrivateOverride{
        public void f(){
            System.out.println("public f()");
        }
        public void sp(){
            System.out.println("Base Class don't have");
        }
    }

    //输出结果为:

    private f()

    this is a base class private method

    this is a base class public method

    this is a base class final method

    Base Class don't have

    public f()

    Base Class don't have

    this is a base class public method

    this is a base class final method

    解析:由于private方法是final方法,而且对于子类是屏蔽的,因此,Derived类中的f()方法就

    是一个全新的方法,既然基类中的方法在子类中不可见,因此也不能重载。由程序执行结果来看

    ,将基类引用指向子类对象后,基类引用可以访问基类独有的和不能被子类覆盖的方法(即

    private,final,还有部分子类没有覆盖的),访问子类已经覆盖的方法时,执行的是子类中的

    该方法。若要执行子类中特有的方法,就得将该引用强制转换为子类引用(如:((Drieved)

    op).sp()),当定义子类引用指向子类对象后,则只能访问子类继承的(除屏蔽的private方法外

    )和其有的方法。可见final方法只是不能被子类覆盖(我亲自试了,不能覆盖),但是可以被

    子类继承

  • 相关阅读:
    input宽度自适应
    七牛云上传 图片
    删除文件夹所有内容
    无法获取 div123 的内部内容,因为该内容不是文本。
    关于"无法删除数据库 'xxx',因为该数据库当前正在使用" 解决办法
    Asp.Net 获取FileUpload控件的文件路径、文件名、扩展名
    asp.net复制整个文件夹
    多行文本框内容转换空格换行
    花(唯一分解定理+排列组合+快速幂)
    Xn数列(矩阵乘法+快速幂+慢速乘法)
  • 原文地址:https://www.cnblogs.com/ylgl/p/3861941.html
Copyright © 2011-2022 走看看