当前位置: 首页 > news >正文

动易网站设计方案莱西网站网站建设

动易网站设计方案,莱西网站网站建设,app开发网站,移动登录网页模板下载this&super 一、 this this关键字表示调用的是当前类的成员变量或者成员方法 一般情况下,可以省略this关键字直接调用成员变量以及成员方法但当方法的形参与成员变量同名时,如果要在方法内使用成员变量,必须添加this关键字指明使用的是…

this&super

一、 this

  • this关键字表示调用的是当前类的成员变量或者成员方法
    • 一般情况下,可以省略this关键字直接调用成员变量以及成员方法
    • 但当方法的形参与成员变量同名时,如果要在方法内使用成员变量,必须添加this关键字指明使用的是当前类的成员变量
  • 使用this访问成员变量和方法时,如果在当前类中未找到,会从父类(甚至顺着继承关系继续从父类的父类)中查找(子类会继承父类中所有可以被继承的成员变量和方法)
  • this关键字只能在非static方法中使用(static属性修饰的变量或方法在当前类的对象实例化前就已经存在了)
  • 通过this()或者this(参数)调用当前类的其他构造方法时:
    • 不能递归调用
    • 只能在构造方法首行出现

二、 super

  • super关键字表示调用的是父类的成员变量或者成员方法
    • 一般情况下,可以省略super关键字直接调用父类的成员变量以及成员方法
    • 如果子类没有重写父类的方法,只要权限修饰符允许,在子类中完全可以直接调用父
      类的方法;
    • 但当子类的成员变量与父类的成员变量同名、方法的形参与父类成员变量同名或者子类的方法重写了父类的方法时,如果要在子类中使用父类的成员变量或者方法,必须添加super关键字指明调用的是父类中的成员变量或者方法(否则默认调用的是当前类自己的成员变量或者方法)
  • 使用super访问父类的成员变量和方法时,如果在直接父类中未找到,会顺着继承关系继续从父类的父类中查找,直至找到(如果一直到Object类都找不到则抛出异常)
  • super关键字只能在非static方法中使用
  • 通过super()或者super(参数)调用父类的构造方法时:
    • 不能递归调用
    • 只能在构造方法首行出现(因此在构造方法中,不可能同时显式调用父类构造方法和当前类的其他构造方法,因为这二者都要求在构造方法的首行出现)

三、 总结

  • 子类构造方法

    • 子类的任何一个构造方法,必须引用且只能引用一个其他构造方法(当前类中其他重载的构造方法或者父类的构造方法)
    • 若子类构造方法的首行既没有通过this关键字显式调用当前类的其他构造方法,也没有通过super关键字显式调用父类的构造方法,则子类此构造方法默认隐式调用super(),即调用父类中无参的构造方法
    • 如果子类构造方法中既未显式调用父类或当前类的构造方法,且父类中又没有空参的构造方法,则编译出错
  • 调用成员方法时

    • 方法前面没有superthis,先从当前类找,如果没有从直接父类找,再没有顺着继承关系继续往上找

    • 方法前面有super,从当前类的直接父类找,如果没有继续往上找

    • 方法前面有this,先从当前类找匹配方法,如果没有再从直接父类找,再没有继续往上找

  • 调用成员变量时

    • 变量前面没有superthis, 在构造方法、代码块、成员方法中时,先看是否是当前块中声明的局部变量,如果不是局部变量再去找当前类中的成员变量;如果从当前类中没有找到,再找直接父类中的成员变量,如果直接父类中没有找到再继续往上找
    • 变量前面有super,从当前类的直接父类找,如果没有继续往上找
    • 变量前面有this, 先从当前类找匹配的成员变量,如果没有再从直接父类找,再没有继续往上找

四、 笔/面试题

  1. 问:下列代码的执行结果

    public class Main {public static void main(String[] args) {User user = new User();}
    }class Person {public Person() {System.out.println("this is person class");}
    }class User extends Person {
    }
    

    答:当子类构造方法不显式调用当前类的其他构造方法以及父类构造方法时,会隐式调用父类的无参构造方法。因此当实例化User类时,会隐式的调用父类中的无参构造方法,因此输出结果为this is person class

  2. 问:下列语句的执行结果

    class Person {public int age;public Person() {System.out.println("this is person class");}
    }class User extends Person {public User() {}public User(int age) {this();super();}
    }
    

    答:super()this()不能同时出现在一个构造方法中,因此上述代码在编译期间便会报错

http://www.yayakq.cn/news/246343/

相关文章:

  • 建设网站需要学什么程序安阳昨天发生的事件
  • 网站域名备案授权书网站建设后台功能
  • php网站开发个人简历温州新公司做网站
  • 泗阳县住房和城乡建设局网站搜建筑网建筑规范大全
  • 吴川网站开发公司wordpress 企业官网
  • 制作静态网站南山网站建设公
  • 飞创网站建设用微信怎么做商城网站
  • 黄骅港客运站电话号码网站界面设计技巧
  • 医院门户网站开发二字简单大气公司名字
  • 网站建设行业广告语山西省财政厅网站三基建设专栏
  • 易迈互联网站建设怎么样网站优化方式
  • 购物网站开发介绍网站开发中加入cad功能
  • 个人个案网站 类型免费crm网站下载
  • 网站网址大全办公平台
  • 合肥做网站做推广南通科技网站建设
  • 广西建设教育协会网站wordpress域名无法访问
  • 中国建设银行网站-个人客网站建设与运营 就业
  • 住房和城乡建设报名网站湖南百度推广开户
  • 福州网站建设网站设计网站推广网页设计与网站建设完全实用手册
  • 手机做网站自己做wap网站前景
  • 网站设计的布局wordpress 修改logo
  • 服务平台网站设计杂网网站建设
  • 鹤壁市淇滨区建设局网站国家工商注册查询系统官网
  • 网络营销证书有什么用沈阳网站制作优化
  • 设计手机界面的网站网店代运营哪里好
  • 电子商务软件网站建设的核心保定seo推广
  • 济宁官方网站衡阳企业网站
  • 中国建设教育网站河池建设银行招聘网站
  • 行政事业单位网站建设网页视频怎么下载到电脑本地
  • 广州建网站兴田德润可信做h网站