java基础学习(一)

1、this的用法

this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针


有三种用法:

1)、指向当前对象本身,略;

2)、与形参名字相同,用与区分:

        

class  Person {
     private  int  age =  10 ;
     public  Person(){
     System.out.println( "初始化年龄:" +age);
}
     public  int  GetAge( int  age){
         this .age = age;
         return  this .age;
     }
}

3)、引用构造函数,与super有一腿;


2、super

1)、指向当前对象的最近的父类,用super.xxx调用父类的属性和方法;

2)、子类中的成员变量或方法与父类中的成员变量或方法重名:

class  Country {
     String name;
     void  value() {
        name =  "China" ;
     }
}

3)、引用构造函数:

super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。
this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。

class  Person { 
     public  static  void  prt(String s) { 
        System.out.println(s); 
    
   
     Person() { 
        prt( "父类·无参数构造方法: " + "A Person." ); 
     } //构造方法(1) 
    
     Person(String name) { 
        prt( "父类·含一个参数的构造方法: " + "A person's name is "  + name); 
     } //构造方法(2) 
    
public  class  Chinese  extends  Person { 
     Chinese() { 
        super ();  // 调用父类构造方法(1) 
        prt( "子类·调用父类”无参数构造方法“: " + "A chinese coder." ); 
    
    
     Chinese(String name) { 
        super (name); // 调用父类具有相同形参的构造方法(2) 
        prt( "子类·调用父类”含一个参数的构造方法“: " + "his name is "  + name); 
    
    
     Chinese(String name,  int  age) { 
        this (name); // 调用具有相同形参的构造方法(3) 
        prt( "子类:调用子类具有相同形参的构造方法:his age is "  + age); 
    
    
     public  static  void  main(String[] args) { 
        Chinese cn =  new  Chinese(); 
        cn =  new  Chinese( "codersai" ); 
        cn =  new  Chinese( "codersai" 18 ); 
    
}

运行结果:

父类·无参数构造方法: A Person.
子类·调用父类”无参数构造方法“: A chinese coder.
父类·含一个参数的构造方法: A person's name is codersai
子类·调用父类”含一个参数的构造方法“: his name is codersai
父类·含一个参数的构造方法: A person's name is codersai
子类·调用父类”含一个参数的构造方法“: his name is codersai
子类:调用子类具有相同形参的构造方法:his age is 18

super和this可以调用父类和本类中的各种形式的构造方法;但从本质上将this是一个指针指向本对象,而super是一个关键字;

4、子类是否会继承父类的构造方法

先给结论:

1)、子类实例化对象时,会调用父类的构造方法;

2)、如果子类没有显式的调用父类的构造方法,则会默认调用super;

3)、如果父类中没有无参构造方法,而子类中又没有显示调用父类构造方法,则编译器报错。如果用super显式调用父类带参的构造方法,需要将其置于第一句,否则编译器报错。

例子如下:

java基础学习(一)_第1张图片

java基础学习(一)_第2张图片

不显式调用父类带参方法,报错。


你可能感兴趣的:(java,java,新手)