JAVA继承
来源:互联网 发布:mac diva是什么颜色 编辑:程序博客网 时间:2024/05/02 02:06
首先,我们来说一下,为什么需要继承?简单的一句话,它可以提高代码的复用性,提高代码的可读性!我个人认为这一句话既可以说明为什么需要继承,也可以说明使用继承的意义。但继承的主要意义还是扩展类的功能。不多废话,进入正题.
首先,我们通过一个例子,来看一下继承。
- public class Person
- {
- public Person(){}
- public Person(String name,int age)
- {
- this.setName(name);
- this.setAge(age);
- }
- private String name;
- public void setName(String name)
- {
- this.name = name;
- }
- public String getName()
- {
- return this.name;
- }
- private int age;
- public void setAge(int age)
- {
- this.age = age;
- }
- public int getAge()
- {
- return this.age;
- }
- }
以上我们做为一个父类,关于是什么父类,我们后面介绍··
- pubilc class Student extends Person
- {
- public Student()
- {
- }
- public Student(String name,int age,String hobby)
- {
- super(name,age); //利用super关键字
- this.hobby = hobby;
- }
- //扩展的属性
- private String hobby;
- public void setHobby(String hobby)
- {
- this.hobby = hobby;
- }
- public String getHobby()
- {
- return this.hobby;
- }
- }
如何实现继承呢?
在JAVA语言中,是用extends(扩展的意思)来表示一个类继承自另一个类的。
例如我们以上代码中的Student类就是继承了Person类.
注意:在JAVA中,不允许多重继承,例如:public class Student extends Person,Teacher{}这句代码就是错误的··
通常,我们会在父类中定义一些通用的属性与方法,所谓通用的属性与方法,也就是说,我们几个类中抽取出来的
相似的属性与方法,我们把这样的属性或者方法抽取出来放在一个类中,那么这个类就将成为我们那几个类的父类.
子类会自动继承父类中的属性和方法,子类也可以定义自己的属性和方法,就像我们上面代码中Student类中的Hobby属性,
就是我们Student类自己扩展的属性.
在子类的构造方法中,通过Super关键字来调用父类的构造方法,并且Super语句一定要放在该构造方法中的第一句中.因为在创建子类对象时,是先创建父类对象,然后创建子类对象,如果没有显式调用父类的构造方法,将自动调用父类的无参构造方法。
补充一点,就是关于父子类之间的术语问题:
有很多关于父子类的表述术语:比如父类和子类,超类和子类,基类和派生类
关于方法重写
在JAVA中,子类可以继承父类中的方法,而不需要重新编写方法,但是有的时候,我们不想
原封不动的使用继承自父类的方法,我们就必须对父类中的那个方法进行修改,那么我们就
需要使用到方法的重写.
方法的重写是针对于具有继承关系的两个类来说的.
- public class Person
- {
- public void say()
- {
- System.out.println("大家好,我是子类Person中的say方法");
- }
- }
- public class Student extends Person
- {
- public void say()
- {
- System.out.println("大家好,我是子类Student中的say方法");
- }
- }
以上Person类中的say方法就被重写了
方法重写的定义:
如果在子类中定义了一个方法、其名称、返回类型及参数列表正好与父类中某个方法的名称,
返回类型,参数列表相匹配,那么可以说,子类的方法重写了父类的方法.
注:1.在重写父类中的方法的时候,不能降低父类中方法的访问权限
2.发生方法重写的两个类的名称,返回值以及参数列表必须完全一致.
3.子类中抛出的异常不能大于父类中抛出的异常