[Java基础]-- super和this使用举例,以及方法覆盖和重载举例

super和this两者都属于构造器的部分

 

一、使用方法:

   this: 1、this.属性  2、this.方法   3、this(参数)  

 注意----》(1)属性或者方法不能是静态的,因静态的方法或属性不属于类的实例!

   (2)属性只能是本类的属性,方法可以是父类的方法

        super:  1、super.方法   2、super(参数1,参数2,……)

注意 ----》(1)如果super和this关键字都在构造方法中出现,那么this一定是放在最前面

 

二、使用举例

1、新建父类:AnimalInfo.java

public class AnimalInfo {
private String color;
private String type;

public AnimalInfo(){
System.out.println("父类的无参构造方法!");
}
public AnimalInfo(String color, String type) {
this.color = color;
this.type = type;
System.out.println("父类的有参构造方法结果:打印颜色:"+color+";类型:"+type);
}

/**
 * 重载:要求返回值类型、方法名称一致而参数列表必须不同,访问修饰符不限制
 * 
 */
public void eat(){
System.out.println("父类的吃方法!");
}
protected void eat(String width){}
void eat(String width,String height){}

/*动物叫方法*/
public void song(){
System.out.println("父类的叫方法!");
}
}

2、新建子类:DogInfo.java

public class DogInfo extends AnimalInfo {
    String name;

    /**

      *覆盖:要求方法名称必须一致,访问修饰符限制必须一致或者范围更宽
     */

    /*如果构造方法不添加访问修饰符,那么就是默认(default)*/
    DogInfo() {
    this("狗二");
    System.out.println("子类无参构造方法");
    super.eat();//如果遇到this关键字,它就必须承让了,放在第二行
   this.eat();
    }
    /**覆盖构造方法,覆盖只发生在构造方法中*/
    DogInfo(String input) {
    //必须放在构造方法的第一行
    super("blue","dog");
     // super(); //必须放在构造方法的第一行
       name = input;
   }

    private DogInfo(String out,String in){ } 
    DogInfo(String out,String in,String error){  } 
}

 

3、新建测试类:TestMethod.java

public class TestMethod{

    public static void main(String args[]) {
//     AnimalInfo an=new AnimalInfo();
    DogInfo dog2 = new DogInfo();
    DogInfo dog1 = new DogInfo("狗一");
        System.out.println(dog1.name + ";" + dog2.name);
        /**打印结果:
       父类的有参构造方法结果:打印颜色:blue;类型:dog
父类的有参构造方法结果:打印颜色:blue;类型:dog
父类的吃方法!
父类的吃方法!
狗一;狗二
        */

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oo寻梦in记

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值