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

例子如下:



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


发布了9 篇原创文章 · 获赞 3 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览