JAVA_继承演示03_ExtendsDeamo01.java super关键字 重写父类的方法,中,调用父类的方法

/**
 *ExtendsDeamo04
 *继承演示04
 *
 *重写父类的方法
 *方法重写 overriding mothod
 *
 *重写父类的方法,中,调用父类的方法
 */
public class ExtendsDeamo04{
	public static void main(String[] args){
		Women woman = new Women("妮妮");
		woman.print();
		woman.desc();//desc()是父类的方法,但是可以被自动调用,这就表示desc()已经被子类继承
	}
}
//父类
class Human{
	/*如果属性需要被子类继承,那么可以使用protected关键字声明;
	 protected 翻译为 受保护的;
	 desc 翻译为 描述;
	 区别private和protected:
	 private是私有属性,不能被继承,所以,private不能用于父类;
	 或者说,父类是面向对象,如果不能被继承,属性也就不能被实例化,父类就没有任何意义了,
	 为了避免父类没有意义,所以父类必须使用protected;
	 */
	protected String name;
	protected void desc(){
		System.out.println("Human name is "+name);
	}
	
	public Human(String name){
		System.out.println("Human");
	}
}
//子类
class Women extends Human{
	public Women(String name){
		//显示的调用父类的构造方法
		super(name);//因为父类的构造方法不是public Human();而是public Human(String name);所以
					//使用super关键字调用;super必须在构造方法的第一行;
		
		this.name = name;
	}
	public void print(){
		System.out.println("my name is "+name);
	}
	
	//重写父类的方法
	public void desc(){
		super.desc();
		System.out.println("Women name is "+name);
	}
	/*
	 重写父类的方法,之前,输出的结果:
	 Human
	 my name is 妮妮
	 Human name is 妮妮
	 
	 重写父类的方法,之后,输出的结果:
	 Human
	 my name is 妮妮
	 Women name is 妮妮
	 
	 重写父类的方法,里面,调用父类的方法,需要用到super;
	 这里重新的是public void desc();调用父类的方法,则是super.desc();
	 调用父类方法 super.desc(),之后,输出的结果:
	 Human
	 my name is 妮妮
	 Human name is 妮妮
	 Women name is 妮妮
	 */
}

你可能感兴趣的:(JAVA_继承演示03_ExtendsDeamo01.java super关键字 重写父类的方法,中,调用父类的方法)