天天看点

Java语言基础之super关键字

This 调用当前对象的属性,方法

Super 调用父类的构造器,属性,方法

This() super() 必须出现在构造方法的第一行

子类 dog:

package com;

public class Dog extends Animal{
	
	
// super 表示调用父类的方法,属性,以及构造函数	
 public Dog()
 {
	 super("Dog");  // 直接调用父类有参构造器赋初始值
	 System.out.println("Dog 无参数构造器");
 }
 @Override
 public void howl()
 {
	  System.out.println(this.name+".... wangwang");
	  super.show();   // super 表示调用父类的show方法
 }
 
 
           

父类animal:

package com;
// 父类这里是抽象类(abstract) 不能直接new 对象 需要具体的子类赋值
public abstract class Animal {
   public String name;
   
   
   public Animal()
   {
	   this("Animal");
	   System.out.println("Animal 无参构造器");
   }
   public Animal(String name)
   {
	   this.name=name;
	   System.out.println("Animal 有参构造器");
	   
   }
   public void walk()
   {
	   System.out.println(this.name+"...walk");
   }
   public void sleep()
   {
	   System.out.println(this.name+"...sleep");
   }
   public void show()
   {
	   System.out.println("Animal father.."+"show");
   }
 
   public abstract void howl();
}
           

main:

package com;

public class main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		
		// 子类对象赋值给父类变量 
		//Animal animal = new Cat();
		//animal.name="Cat";
		//animal.walk();
		// howl() 方法在父类中是抽象方法(abstract),没有实际定义,只是声明而已。
		// 在Cat类中实际定义howl()方法的实现。
		// 在父类变量在实现调用时,指向的是子类对象,所以howl()方法是子类的方法。
		// 最后输出的是Cat.... miaomiao 而不是Cat.... xxxxx
		//animal.howl();
		
	//	getMsg(animal);
		
		Animal animal1 = new Dog();
		//animal1.name="Dog";
		animal1.walk();
		animal1.howl();
		//getMsg(animal1);
		
		
	}
	
	
	public static void getMsg(Animal animal)
	{
		animal.howl();
	}

}
           

运行结果:

Java语言基础之super关键字

继续阅读