JAVA --接口与对象(六)super

准备一个显式提供无参构造方法的父类

package charactor;
public class hero implements AD{
    
    
	String name;
	int hp;
	float movespeed;
	int armor;
	public void physicattack() {
    
    
		System.out.println("物理攻击");
	}
	public void die() {
    
    
		
	}
	public void kill(hero i) {
    
    
		i.die();
	}
	public static void battlewin() {
    
    
		System.out.println("战斗胜利");
	}
	public void hero(item a) {
    
    
		System.out.println("hero use item");
		a.effect();
	}
	public static void main(String args[]) {
    
    
		new hero();
	}
}

实例化子类,父类的构造方法一定会被调用

实例化一个ADHero(), 其构造方法会被调用
其父类的构造方法也会被调用
并且是父类构造方法先调用
子类构造方法会默认调用父类的 无参的构造方法

package charactor;

public class adhero extends hero implements mortal,AD{
    
    
	public adhero() {
    
    
		System.out.println("我是adhero的构造方法");
	}
	public static void main(String args[]){
    
    
		new adhero();
	}
}

在这里插入图片描述

父类显式提供两个构造方法

分别是无参的构造方法和带一个参数的构造方法

package charactor;
public class hero implements AD{
    
    
	String name;
	int hp;
	float movespeed;
	int armor;
	public hero() {
    
    
		System.out.println("我是hero的构造方法");
	}
	public hero(String name) {
    
    
		System.out.println("hero 的一个又参数的构造方法");
		this.name = name;
	}

子类显式调用父类带参构造方法

package charactor;

public class adhero extends hero implements mortal,AD{
    
    
	public void physicattack(){
    
    
	System.out.println("进行物理攻击");
	}
	public adhero() {
    
    
		System.out.println("我是adhero的构造方法");
	}

	public static void main(String args[]){
    
    
		new adhero();
		new adhero("德玛西亚啦啦啦");
	}
	public adhero(String name) {
    
    
		super(name);
		System.out.println("这是一个带参数的构造方法");
	}

调用父类属性

通过super调用父类的moveSpeed属性
ADHero也提供了属性moveSpeed

	public int movespeed1() {
    
    
		return this.movespeed1;
	}
	public int movespeed() {
    
    
		return super.movespeed;
	}

调用父类方法

ADHero重写了useItem方法,并且在useItem中通过super调用父类的useItem方法

public void useitem(item a) {
    
    
		System.out.println("重写这个useitem方法");
		super.useitem(a);
	}

总结:

super 可以当作父类的 引用 来用

练习-super⭐⭐⭐
父类Hero提供了一个有参的构造方法
但是没有提供无参的构造方法
子类应该怎么处理?

//父类,hero类
	public void useitem() {
    
    
		System.out.println("hero use item");
		item a = new item();
		a.effect();

	}
//子类,adhero类
	public void useitem() {
    
    
		System.out.println("重写这个useitem方法");
		super.useitem();
	}

猜你喜欢

转载自blog.csdn.net/qq_17802895/article/details/108569477