Java三大特性之一----------继承
什么是继承?
继承是面向对象的三大特征之一.java
也是实现软件复用的重要手段.ide
Java继承具备单继承的特色, 每一个子类只有一个直接父类.测试
所谓继承就是一个类(子类)保留了另一个类(父类)的一些(非私有)属性或者方法code
继承如何实现?
Java的继承经过extends关键字实现对象
Java类继承的格式以下继承
修饰符 class SubClass extends SuperClass { //类定义部分 }
下面咱们经过一个具体的例子来看一下java的继承机制如何实现class
首先我写了一个动物类test
package parent; public class Animal { public int age; public String name; public void eat() { System.out.println(name+"吃东西"+"它今年"+age+"岁了"); } }
而后写了一个子类(狗)import
package child; import parent.Animal; public class Dog extends Animal{ }
能够看到个人子类什么也没有,可是他继承自父类Animal,父类的非私有属性和方法他均可以用软件
下面我写一个测试类来调用继承自父类的方法和属性
package test; import child.Dog; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Dog dog = new Dog(); dog.name="小花"; dog.age=2; dog.eat(); } }
运行程序我把输出结果放在下面
小花吃东西它今年2岁了
上面的列子咱们能够看到Dog的定义的中没有属性和方法的声明,可是咱们在测试类中却能够调用它的一些属性和方法,原来咱们在调用一个类的成员时,他首先会去看本身有没有,若是本身没有就会去看他的直接父类有没有,再去找间接父类有没有,直到找到为止,那若是找不到呢?找不到很简单,报错嘛,因此咱们就看到了上面的运行结果
这里有几点注意事项和说明,也是新手很是会犯错误的地方
Java的子类不能继承父类的构造器.
Java不支持多继承,只能单继承,可是Java支持多级继承
Java的类若是没有显示声明继承的父类,那么默认会继承java.lang.Object类,Object类是全部类的根类,也就是说java的全部类都直接或者间接的继承继承自这个类。
上面的咱们自是用子类调用父类的成员,有时候咱们不单单是简单继承,咱们须要对父类的方法进行修改,增长一些方法,增长一些属性,咱们这里说的是增长没有所有从新写,体现java继承优势之一,增长了代码的复用性。关于java继承的其余好处,咱们后面再统一列出
下面我会修改Dog类,让他与父类有些不一样
package child; import parent.Animal; public class Dog extends Animal{ public boolean sex; @Override public void eat() { System.out.println(name+"吃骨头"+"它今年"+age+"岁了"); } public void printSex() { if(sex==true) System.out.println("男"); else System.out.println("女"); } } package test; import child.Dog; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Dog dog = new Dog(); dog.name="小花"; dog.age=2; dog.eat(); dog.sex=true; dog.printSex(); } }
输出结果:
小花吃骨头它今年2岁了
男
能够看到这个测试中咱们一样调用eat方法,但输出和以前不同,这是由于我在这里重写了父类的eat方法,当子类重写了方法以后,再调用这个方法时,他就会调用本身的方法,那么什么是重写呢?怎样重写呢?
这种子类包含与父类同名方法的现象称为方法重写(Override). 也被称为方法重写,也能够说子类覆盖了父类的方法
方法重写也要注意如下几点:
方法名相同 / 形参列表相同
子类方法返回值类型应比父类方法返回值类型小或相等. / 子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等.
子类方法的访问权限应比父类方法的访问权限大或相等.
继承的优势与缺点A:继承的好处a:提升了代码的复用性b:提升了代码的维护性c:让类与类之间产生了关系,是多态的前提B:继承的弊端类的耦合性加强了。