类方法和实例方法的调用 super this 访问控制符

一、类方法和实例方法的调用

先看一道选择题:
下列哪种说法是正确的( )
  A. 实例方法可直接调用超类的实例方法
  B. 实例方法可直接调用超类的类方法
  C. 实例方法可直接调用其他类的实例方法
  D. 实例方法可直接调用本类的类方法

先复习一下,类方法(static方法) 实例方法(非静态方法)
在类方法中,不能引用实例变量
不能使用super、this关键字

实例方法可以调用静态方法,静态方法并不能调用普通方法


不考虑访问修饰符的话,
实例方法可以通过super.方法名,对象名.方法名调用父类的实例方法
实例方法可以通过类名.方法名调用父类的静态方法
实例方法通过this.方法名    直接方法名调用本类的其他方法(直接方法名实际上是this的隐藏式调用)
本类的静态方法可以用类名.方法名  方法名调用。本类中为什么可以直接方法名调用静态方法?因为静态方法是程序启动时直接放在内存中
在本题中,如果是私有的,ABC都不能访问   所以选D

二、java中super关键字
1.在子类构造器中显示调用父类构造器(super必须出现在子类构造器的第一行)
2..可以在子类中充当临时父类对象,super.方法名调用父类的方法


三、java中this关键字
1.代表当前对象,指向成员变量和成员方法
2.指向某个构造方法,通过this调用其他构造方法。
this();//代表无参构造方法 
 
用法:

1。this.方法名  调用本类中其他方法

2。this.属性名 调用本类中属性名 

3。this(参数列表) 构造器  (构造方法之间可以互相调用,普通方法不可以调用构造方法)

4。隐藏式调用  直接方法名调用

 

四、访问控制符

访问级别       访问控制修饰符        同类       同包       子类      不同的包
  公开级别:       public                y          y          y          y
  受保护           protected             y          y          y
   默认           没有访问控制符      y          y
   私有             private                  y

 

posted @ 2019-12-01 00:26  下饭  阅读(2067)  评论(0编辑  收藏  举报