Java学习笔记之继承

面向对象的三大特性之一:继承

1.什么是继承?

我们都说万事万物皆可对象,Java中的继承跟现实中的继承也是一样,父亲的财产,由子女继承。那么在Java中,类之间的继承,则是属性与方法的继承。

举个栗子

首先创建一个父类,类是抽象的、广泛的,用来形容某一个群体或一种事物。

public class Animal{//动物父类
   	private int age;//动物年龄
	private String name;//动物名字
	
	public void eat(){
		System.ou.println("进食");
	}
}

这是一个动物父类,动物是广泛,里面可以包含各种各样的动物,比如老虎、狗、猫等。然后再建一个子类。

public class Tiger extends Animal{

}

此类已经继承了父类Animal中的非私有属性和方法,然后再建一个测试类Test。

public class Test{
	public static void main(String[] args){
		Tiger t = new Tiger();//实例化子类
		t.eat();//调用父类中的eat方法
	}
}

以上的代码请自己测试然后得出结果。

所以继承的用法很简单,在子类的声明后加上extends即可,格式为:

public class 子类名 extends 父类名

继承的基本原则:

1、只允许单继承,一个子类只能继承一个父类。

2、一个父类,可以派生出多个子类。

3、所有的类最终都是直接或者间接的的继承:object。在我们创建类的时候,如果没有指明父类,那么会默认的继承:object。

4、子类继承父类以后,可以拥有父类的方法与属性,并且重写父类方法但父类的方法与属性如果是用private修饰,子类无法继承。

总结,继承就是子类继承父类中的非私有属性和方法,不包括构造方法。

当子类继承了父类的方法后,在主方法中实例化时只需要实例化子类即可,然后通过子类调用方法。

继承的运用,是为了代码的复用性。当多个类需要用到同个方法时,用继承可以更加便捷,代码的架构也更灵活。

在此就得说说方法重写(Override)和方法重载(Overloading)

2.方法重写

同样的方法名,参数列表个数、顺序、类型、返回值都必须相同,就构成方法重写。一般用于父类的方法实现的功能不够完善时,子类重写父类方法。

父类:

public class Animal{
	private String name;
	public void eat(){
		System.out.println("进食");
	} 
}

子类:

public class Tiger extends Animal{
	@Override
	public void eat(){
		System.out.println("大吃特吃");
	}	
}

从上述代码中可看出,当子类重写父类方法时,会覆盖掉原有方法的功能,只实现子类的方法体。

3.方法重载
同样的方法名,但参数列表个数、顺序、类型不同,但与返回值无关,就构成方法重载,与方法重写相反。一般用于拓展方法的功能,当一个方法想适用于不同对象时,可用方法重载。

代码实例:

public class Animal{
	public void eat(){
		System.ou.println("进食");
	}
	
	public void eat(String banana){//与上面的方法区别只在于参数列表不同
		System.out.println("吃香蕉");
	}
	
	public String eat(String name){
	//虽然这个方法的返回值不同,但方法重载是与返回值无关的,如果改成void也一样能构成方法重载
		System.out.println("吃苹果");
		return name;
	}
}

至此继承的概念就大致如上所述,方法重写和重载也体现了Java的另一个特性:多态。本文章就不多赘述了。