继承

面向对象第二大特点:继承。在已有的基础上进行功能的扩充

1.继承问题的引出

消除结构上定义上的重复,引用继承,比如两个类,人和学生,学生具有人具有的所有属性,所以学生继承人就好,学生的范围比人更小更具体。

2.继承的实现

在java中继承使用extends关键字来进行实现,语法

    class 子类  extends  父类

         子类也称为派生类

         父类也称为超类(Super class)

class Person{
	private String name;
	private int age;
	public void setName(String name){
		this.name = name;
	}
	public void getName() {
		return this.name;
	}
	public void setAge(int age){
		this.age = age;
	}
	public void getAge(){
		return this.age;
	}
}
class Student extends Person{
	
}
public class TestDemo{
	public static void main(String args[]){
		Student stu = new Student();
		stu.setName("萌萌");
		stu.setAge(6);
		System.out.println(stu.getName());
		System.out.println(stu.getAge());
	}
}

通过上面代码可以发现,发生类继承关系后,子类可以直接执行父类的操作,可以实现代码的重用,并且子类最低也维持和父类相同的功能。

范例:子类进行功能的扩充

class Person{
	private String name;
	private int age;
	public void setName(String name){
		this.name = name;
	}
	public void getName() {
		return this.name;
	}
	public void setAge(int age){
		this.age = age;
	}
	public void getAge(){
		return this.age;
	}
}
class Student extends Person{
	private String school;
	public void setSchool(String school){
		this.school = school;
	}
	public void getSchool(){
		return this.school;
	}
	
}
public class TestDemo{
	public static void main(String args[]){
		Student stu = new Student();
		stu.setName("萌萌");
		stu.setAge(6);
		stu.setSchool("公安大学");
		System.out.println(stu.getName());
		System.out.println(stu.getAge());
		System.out.println(stu.getSchool());
	}
}

上述代码,子类实现了父类功能的扩充。

3.继承的限制

继承的子类可以对父类的操作进行共享,但继承操作也存在一些限制的。

(1)子类对象在进行实例化前,一定会首先实例化父类对象,默认调用父类的构造方法后,再调用子类的构造方法。

           子类中没有任何一条语句会明确调用父类构造,在父类的构造函数还是被执行,证明实例化子类对象一定会实例化父类对象,实际上在子类的构造方法中相当于隐含了一个语句“super()”,此语句在无参时使用不使用都一样。

        父类中没有提供无参构造,super必须指明父类的构造方法。        

(2)java中只允许单继承,不允许多继承

        一个子类只能继承一个父类,但是可以采用多层继承来模仿多继承。

(3)在进行继承时,子类会继承父类的所有结构,包括私有属性、构造方法、普通方法

         所有的非私有属性是显示继承,可以直接调用。

         私有属性是隐世继承,通过其他方法来调用。

         子类能够使用的只有非private属性,private属性不能直接使用。

总结:

1.继承的语法和继承的目的。

2.子类对象的实例化流程,先实例化父类对象。

3.继承的限制,不允许多重继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值