Java中的继承

继承:

利用继承我们可以通过一个已经存在的类,来创造一个新的类。继承已存在的类就是复用(继承)这些类的方法和域,在此的基础上还可以增加一些新的方法和域,以满足需求,这是Java程序的技术核心。

 

定义子类:

public class Student extends Person {

	private String major;
	
	public Student(String name,String major) {
		super(name);
		this.major = major;
		
	}

public void echo() {
		
		System.out.println("我是学生类的方法");
	}
	
}

关键字extends表示正在构造的新类派生于一个已经存在的类。尽管Employee 类是一个父类,但是它拥有的功能却并不比子类多。

 

方法的覆盖:

超类中的方法在子类中并不一定适用,此时子类需要提供一个新的方法来覆盖。

子类中的方法名与超类中的方法名相同,但是子类的方法拥有自己的执行语句。当子类调用的方法名称父类中也存在怎么办呢?是这样的,如果子类对象调用本类中的方法,可直接调用,如果调用 父类中的方法,需要在方法名前面加上一个关键字super,加点,就可以调用父类的方法了。

    public static void main(String[] args) {
		Person [] people = new Person[3];
		people[0] = new Employee("employee" ,2333,1999,11,11);
	    people[0].echo();
	    people[1] = new Student("hehe", "english");
	    people[1].echo();
	    people[2] = new Person("zzz");
	    people[2].echo();
	    Student [] stu = new Student[3];
	    stu[0] = new Student("yuyu","math");
	    stu[0].echo();
	    //stu[1] = new Employee("employee" ,2333,1999,11,11);//兄弟类直接不能创建实例
	    //stu[2] = new Person("zzz"); //子类不能创建父类的实例
	    
	}

 

 

子类构造器

由于Employee类的构造器不能访问父类的私有域,所以必须利用父类的构造器对这部分私有域的值进行初始化,我们可以通过super实现对超类构造器的调用,使用super调用构造器的语句必须是子类构造器的第一条语句。

如果子类的构造器没有显式的调用超类的构造器,则将自动调用超类默认的(没有参数的)构造器。如果超类没有不带参数的构造器,并且在子类的构造器中有没有显式的调用超类的其他构造器,则Java编译器将报告错误。

Super关键字有两个作用,一是调用超类的方法,二是调用超类的构造器。

调用构造器的语句只能作为另一个构造器的第一条语句出现。构造参数既可以传递给本类的其他构造器,也可以传递给超类。

Employee( String n,double s,int year,int month,int day){
		
		super(n);
		salary=s;
		hireDay=LocalDate.of(year, month, day);
		
	}

 

继承层次:

类的继承并不局限于一个层次,可以由子类接着往下派生,,有一个公共超类派生出来的所有类的集合被称为继承层次。Java只允许单继承,一个派生类只能允许有一个超类,即所谓的单继承。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值