继承中this关键字和super关键字的作用

来源:互联网 发布:怎么在mac上把win删 编辑:程序博客网 时间:2024/05/18 01:45
package org.westos_01_继承;
/*
 * 问题:
 * 不仅要在控制台输出子类中的局部变量的值,还要输出子类的成员位置的变量的值,怎么办?
 *
 * 现在要访问子类的成员变量num =20 ;
 * 谁能代表Zi2类,this关键字:代表的是当前类对象
 * 问题:要输出父类中的成员变量的值:
 * super:代表的是父类的存储的空间标识(代表的是父类的对象或者是父类的引用)
 * 应用场景:
 * 访问成员变量:
 * this.成员变量;访问的是本类的成员变量
 * super.成员变量:访问的父类的成员变量
 * 访问成员方法:
 * this.成员方法(); 访问的是本类的成员方法
 * super.成员方法();访问拿到父类的成员方法
 * 访问构造方法:
 * this():访问的是本类中的空参构造;this("..."):访问拿到是本类中的带参构造
 * super():访问拿到是父类中无参构造
 * super(".."):访问的是父类中的带参构造
 * */
class Fu2{

public int num = 10;
}


class Zi2 extends Fu2{
public int num = 20 ;

public void show(){
int num = 30 ;
System.out.println(num);//30
System.out.println(this.num);//20
System.out.println(super.num);//10
}
}


//测试类
public class ExtendsDemo5 {
public static void main(String[] args) {
//创建子类对象
Zi2 z = new Zi2() ;

z.show() ;
}

}

package org.westos_01_继承;
/*
 * 继承中构造访问的访问特点:
 * 1)子类中的构造方法默认访问的是父类的无参构造方法
 * 2)子类的构造方法默认的第一句话:super();
 * 
 * 为什么子类中的构造方法默认访问父类中的无参构造方法
 * 子类继承父类的时候,可能会使用父类的数据,所以在继承的时候,想让父类进行初始化,父类初始化完毕之后,子类才进行自己的初始化!
 * 子类的无参和有参第一句话有一个默认语句:super() ; 
 *
 * */
class Father3{
public Father3(){
System.out.println("这是父类的无参构造方法...");
}

public Father3(String name){
System.out.println("这是父类的带参构造方法...");
}
}
//子类
class Son3 extends Father3{
public Son3(){
///super() ;
System.out.println("这是子类的无参构造方法...");
}



public Son3(String name){
//super() ;
System.out.println("这是子类的有参构造方法...");
}





//测试类
public class ExtendsDemo6 {
public static void main(String[] args) {
//创建对象
Son3 s = new Son3() ;
System.out.println("-------------------");
Son3 s2 = new Son3("高圆圆") ;


}
}

原创粉丝点击