Java extends用法详解
概要:
理解继承是理解面向对象程序设计的关键。在Java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。在Java中不允许多继承。
(1)继承
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | class Animal{ void eat(){ System.out.println( "Animal eat" ); } void sleep(){ System.out.println( "Animal sleep" ); } void breathe(){ System.out.println( "Animal breathe" ); } } class Fish extends Animal{ } public class TestNew { public static void main(String[] args) { // TODO Auto-generated method stub Animal an = new Animal(); Fish fn = new Fish(); an.breathe(); fn.breathe(); } } |
在eclipse执行得:
?
1 2 | Animal breathe! Animal breathe! |
java文件中的每个类都会在文件夹bin下生成一个对应的.class文件。执行结果说明派生类继承了父类的所有方法。
(2)覆盖
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | class Animal{ void eat(){ System.out.println( "Animal eat" ); } void sleep(){ System.out.println( "Animal sleep" ); } void breathe(){ System.out.println( "Animal breathe" ); } } class Fish extends Animal{ void breathe(){ System.out.println( "Fish breathe" ); } } public class TestNew { public static void main(String[] args) { // TODO Auto-generated method stub Animal an = new Animal(); Fish fn = new Fish(); an.breathe(); fn.breathe(); } } |
执行结果:
?
1 2 | Animal breathe Fish breathe |
在子类中定义一个与父类同名,返回类型,参数类型均相同的一个方法,称为方法的覆盖。方法的覆盖发生在子类与父类之间。另外,可用super提供对父类的访问。
子类实例化的时候会先调用父类的构造函数 在调用它自己的构造函数
如果父类有多个构造函数,默认调用父类无参数的构造函数