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的另一个特性:多态。本文章就不多赘述了。