继承

继承

1.为什么需要继承

现在存在两个类如下在这里插入图片描述
显然由图中我们可以看出,存在多行代码的重复现象,这里为了实现代码的复用引入继承

2.什么是继承

通过一个已有类来创建新类的机制,由继承而得到的类称为子类(或派生类),被继承的类称为父类(或超类)。

语法:
class <子类> extends <父类>
3.父类成员变量覆盖

根据访问权限修饰符的不同,子类可以继承父类中某些成员变量和方法,提高了代码的重用性,子类也可以添加新的成员变量和方法

子类(Student类):
public class Student extends Person{

	String id;
	int name=1;
	
	{
		System.out.println(name);
	}

	public static void main(String[] args) {
		new Student(); 
	}
}

父类(Person类):
public class Person {
	
	String name="Tom";
	String mobile;
	String address;
}


运行后输出:
在这里插入图片描述
④得出结论:
这时使用子类的实例化对象去调用name,使用的是子类中的(类比与全局变量和局部变量的适用范围)
当子类里面的变量和父类里面的变量名字重复(忽略数据类型),则父类中变量被覆盖

4.继承的特点

①在javaz中类只有单继承
②Object类是所有类的直接或间接父类
③如果父类中的属性或方法是私有的,则子类不能继承
④子类可以有自己新的成员变量

5.final

一个类加了final以后就不能再被继承

6.父类对子类构造方法的影响

①当父类中有无参构造方法时,子类中的super()调用父类中该无参构造方法
使用前提子类中调用父类无参构造方法的构造方法没有调用本来中其他构造方法(因为调用子类其他代码的方法this()和调用父类无参构造方法的super()都必须放在有效代码行的第一行

Student中
public class Student extends Person{

	Student(){
		super();//必须放在有效代码的第一行,不写也默认有,调用父类无参构造方法
	}
	Student(int age){
		this();//调用上面的构造方法,必须放在有效代码的第一行
	}

	public static void main(String[] args) {
		new Student(); 
	}
}
Person中
public class Person {

}

③如果父类没有无参构造方法,则子类必须直接或间接指定调用父类哪一种构造方法且放在有效代码行第一行
在这里插入图片描述

6.为什么父类只存在有参构造方法,子类会报错

在这里插入图片描述
Student中默认有一个无参构造方法,该无参构造方法默认有一个super()去调用父类中的无参构造方法,而此时父类中定义了一个有参构造方法则没有默认的无参构造方法,故出错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值