浅谈JAVA继承

继承

多个类中拥有相同的属性以及方法的时候,可以定义一个父类,然后子类去继承父类,就不用在子类中多次写这些方法以及属性,例如:
苹果、梨子、西瓜三个类,其中的共同属性就是都是水果,都可以吃,那么我们就可以定义一个水果类,然后水果类,就可以有个属性(名字),有个方法(可吃),然后让着三个类去继承水果类即可

继承关键字以及实例:
extends

public class text {
	
	public static void main(String[] args) {
		Son son=new Son();
	}
}

class Son extends Father{
	public Son() {
		System.out.println("我是子类"+super.name);
	}
}

class Father{
	String name="帅帅哒";
}
继承的注意事项:

1.JAVA只支持单继承,不支持多继承
2.类之间存在着:is a 的关系,就可以考虑使用继承,不要为了继承部分功能,而去使用继承

继承的加载顺序:
public class Father {
	static {
		System.out.println("我是父类静态方法");
	}
	
	public Father() {
		System.out.println("我是父类构造函数");
	}
	
	{
		System.out.println("我是父类构造代码块");
	}
	
	public static void main(String[] args) {
		Son son=new Son();
	}
}

class Son extends Father{
	static {
		System.out.println("我是子类静态方法");
	}
	
	public Son() {
		System.out.println("我是子类构造函数");
	}
	
	{
		System.out.println("我是子类构造代码块");
	}
	
}

以上的输出是:
我是父类静态方法
我是子类静态方法
我是父类构造代码块
我是父类构造函数
我是子类构造代码块
我是子类构造函数

解释:
因为静态类加载是在虚拟机运行的时候就加载,然后继承,又首先看父类,所以会先运行父类的静态方法,然后才是子类的静态方法,
接着因为创建对象,需要调用构造函数,然而子类的构造函数会首先访问父类的构造函数,所以首先加载的是父类的方法,然后才是子类的方法

所以加载顺序为:父类静态方法->子类静态构造方法->父类构造代码块->父类构造方法->子类构造代码块->子类构造方法


错误示范:
public class text {
	
	public static void main(String[] args) {
		Son son=new Son();
	}
}

class Son extends Father{
	public Son() {
		System.out.println("我是子类"+super.name);
	}
	public Son(String name) {
		System.out.println("子类");
	}
}

class Father{
	String name;
	public Father(String name) {
		// TODO 自动生成的构造函数存根
	}	
}

注意:这个代码是会报错的,因为子类构造函数会默认调用父类的构造函数,然而你申明了父类的有参构造函数,就不会自动创建无参构造了,所以会报错,在写代码的时候,最好无参构造函数也写一个,防止意外


总结:

1.这篇主要介绍了继承的加载顺序以及默认调用父类无参构造函数
2.以及一个错误示范
3.对使用继承一般是在 is a的关系
4.JAVA只能单继承,不能多继承

5.关于多态的,另一篇博客中有介绍,可以自行观看
6.关于final、super、this关键字,以及重载和重写会在后续博客中介绍

猜你喜欢

转载自blog.csdn.net/qq_37871033/article/details/86376860
今日推荐