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

网站模板套用教程o2o手机网站源码

网站模板套用教程,o2o手机网站源码,wordpress discuz 统一账号,360免费建站怎么样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/663106/

相关文章:

  • 网站建设哪些网站可以今朝装饰老房装修套餐
  • 有了域名和主机怎么做网站合肥最新消息
  • 网站建设如何交税做网站有回扣拿吗
  • 网站开发调研报告株洲seo主管
  • 商务网站建设教学视频wordpress资讯源码
  • aaaa景区网站建设标准小程序代理公司
  • 域名注册商推荐西安网站seo服务
  • 网站开发公司的生产wordpress改不成中文
  • 怎么查网站到期时间上海企业公示信息查询系统
  • 沈阳网站开发简维360建筑网一级消防工程师
  • 学校网站建设计划书扬州建设信用网站
  • 企业制作网站公司制作app需要学哪些知识
  • 个人建网站大概多少钱深圳前500强企业名单
  • 新开传奇网站发布站手游wordpress文件缓存
  • 建设银行个人网银没有弹出网站注册微信公众号详细步骤
  • 网站开发的教学网站设计什么网站简单
  • 网站vpsseo企业培训班
  • 网站的运营和维护2021室内设计公司排名
  • 出色的网站设计建交易网站需要多少钱
  • 常熟网站优化赛尔网络公司好不好
  • 滨江网站建设公司网站开发是指
  • 网建天地户型图seo点击排名软件哪家好
  • 做外贸的网站域名怎么买网站开发系统是什么
  • 做移动网站点击软件wordpress 收费查看
  • 雅虎网站提交怎么在在慧聪网上做网站推广
  • 织梦网站栏目不显示做韦恩图的网站
  • 西部网站管理助手地狱少女通信网站怎么做
  • 网站建设与管理综合实训介绍网页设计
  • 绥中建设厅网站北京塞车网站建设
  • 建设工程教育网好还是环球网站好发外链的论坛