构造函数,抽象类

构造函数

也叫构造方法,取名必须与类名相同;

注意:调用子类构造函数时,首先调用父类构造函数,然后调用子类构造函数。

在子类中,如果不加关键字super的话,默认调用的是子类的方法,super关键字调用父类的方法:

public class A {
	
	private String nameA="A";
	
	public void getName() {
		System.out.println("父类"+nameA);
	}
	public static void main(String[] args) {
	}
	
}
 
 
public class B extends A{
	private String nameB="B";
	
	@Override
	public void getName() {
		System.out.println("子类"+nameB);
		super.getName();
	}
	
	public static void main(String[] args) {
		B b=new B();
		b.getName();
	
	}
}

运行结果:

构造函数,抽象类

子类B重写了父类A的getName方法,并打印出了“子类B”;然后使用super调用了父类的getName方法打印出“父类A” 。这里必须使用super

 如果不明确出来,按照子类优先的原则,相当于还是再调用重写的getName()方法,此时就形成了死循环,执行后会报java.lang.*Error异常。如下图所示:

构造函数,抽象类

 构造函数,抽象类

同样,super也可以用来调用父类的变量,但是注意我们通过super是不能访问父类private修饰的变量和方法的,因为这个只属于父类的内部成员,一个对象是不能访问它的private成员的。 

抽象类

abstract 用于定义抽象类和其中的抽象方法。

什么是抽象类?

首先,抽象类是不允许被实例化的;

其次,抽象类中的抽象方法必须被子类实现。

参考链接:https://blog.csdn.net/yongbutingxide/article/details/82669054;https://www.cnblogs.com/flxy-1028/p/10959722.html

上一篇:1.继承


下一篇:继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记