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显式调用父类带参的构造方法,需要将其置于第一句,否则编译器报错。

例子如下:



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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值