Java基础_继承与重写

Day_09 super,this关键字

一.super关键字
1.通过super关键字可以使用父类的内容。
2.super代表父类的一个引用对象。
3.如果用super关键字,必须出现在调用位置第一行。

二.方法的重写
1.继承后,子类就拥有了父类的功能。
2.在子类中,可以添加子类特有的功能,也可以修改父类的原有功能。
3.子类中方法与父类完全一致时,会发生覆盖操作。
4.父类中的私有方法不能被重写。
5.子类重写父类方法时,修饰符权限要大于父类的。

三.成员变量的使用

public class Extends_Variable {
     

	public static void main(String[] args) {
     
		
		Sub s= new Sub();
		
		s.show();

	}

}

class Fu{
     
	
	int number = 20;
	
}

class Sub extends Fu{
     
	
	int number;
	
	public void show() {
     
		
		int number = 9;
		System.out.println(number);//变量的就近原则。
		
		System.out.println(this.number);//调用本类的成员变量。
		
		System.out.println(super.number);//调用父类的成员变量。
		
	}
	
}

四.成员方法的使用

public class Extends_Method {
     

	public static void main(String[] args) {
     
		
		Sub2 s = new Sub2();
		
		s.testShow();//调用普通方法。
		s.eat();//调用重写方法。

	}

}

class Fu2{
     
	
	public void show() {
     
		System.out.println("爸爸展示");
	}
	
	public void eat() {
     
		System.out.println("爸爸吃");
	}
	
}

class Sub2 extends Fu2{
     
	
	public void testShow() {
     
		super.show();//调用父类的方法。
	}
	
	public void eat() {
     //方法的重写。
		System.out.println("儿子吃肉");
	}
	
}

五.构造方法的使用
1.子类创建对象时,默认访问父类的无参构造方法。
2.在构造方法的第一行有一条默认语句:super()。
3.父类没有无参构造,可用super调用父类其他构造。

六.构造方法的使用

public class Extends_Construct {
     

	public static void main(String[] args) {
     
		
		Sub3 s = new Sub3();//创建子类对象,在调用子类午餐够早之前,会先去调用父类的无参构造。

	}

}

class Fu3{
     
	
	/*public Fu3() {
		System.out.println("Fu3的无参构造方法");
	}*/
	
	public Fu3(String name) {
     
		System.out.println("Fu3的含参构造方法" + name);
	}
	
}

class Sub3 extends Fu3{
     
	
	public Sub3() {
     
		super("Yan Dexuan");//调用父类的含参构造
		System.out.println("Sub3的无参构造方法");
	}
	
	/*public Sub3(String name) {
		this();//调用本类的无参构造。
		System.out.println("Sub3的含参构造" + name);
	}*/
	
}

七.this和super的区别
1.this代表对本类对象的引用,super代表父类对象的引用。
2.this用于区分局部变量和成员变量,super用于区分本类变量和父类变量。
3.this.成员变量,this.成员方法(),this(参数)代表调用本类内容。super.成员变量,super.成员方法,super(参数)代表调用父类内容。
4.this和super不可同时出现在同一个构造方法中,两者出现都必须放在构造方法内的第一行,因此不能同时出现。

八.重写与重载的区别
1.重载:指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数数量或参数类型不能完全相同。

2.重写:存在于子类和父类之间,子类定义的方法与父类中的方法具有相同的方法名,相同的参数列表以及相同的返回值类型。

3.重写是父类与子类之间多态性的一种表现,重载是一类中多态性的一种表现。

你可能感兴趣的:(学习,java)