您所在的位置:主页 > JAVA技术 >

java编程之继承性

时间:2014-08-26 17:26来源:未知 作者:疯狂java 点击:

  在现实生活中,我们经常听到“继承”二字,这两字通常存在于父子之间。在Java中,继承是利用类与类之间的共同点建立起简化程序的一种方式,继承的类称为子类,被继承的类称为父类。

  public class Fruit {

  public String color ="";

  public void plant(){

  System.out.println("果树正在种植ing");

  }

  public void grow(){

  System.out.println("果树正在生长ing");

  }

  public void harvest(){

  System.out.println("果树已经收获......");

  }

  public Fruit(){

  this("this调用有参构造方法");

  System.out.println("无參给构造方法");

  }

  public Fruit(String color){

  System.out.println("有参构造方法");

  this.color=color;

  }

  public static void main(String[] args){

  Fruit fruit=new Fruit();

  fruit.grow();

  fruit.plant();

  fruit.harvest();

  Apple apple=new Apple();

  apple.plant();

  System.out.println("color:"+apple.color);

  }

  }

  public class Apple extends Fruit{

  public String color ="red";

  public void plant(){

  System.out.println("苹果树正在种植ing");

  }

  }

  在上面的两个类中,fruit是父类,apple是子类,子类继承了父类中所有的成员变量和成员方法,可以通过对象访问使用父类的非私有的变量和方法,对于私有的变量可以通过函数间接调用,而父类中的方法通常不会声明为私有的。

  子类和父类之间还有一种重要的关系,那就是重写和覆盖。当子类中定义的变量与父类中定义的变量完全相同时,就会覆盖父类中的变量比如上例中的color,在父类中输出color是null,在子类中输出color是red。两者不同。方法重写就是子类与父类中的方法定义完全相同,但是方法体不同。如上例中plant方法,在子类中调用和在父类中调用,输出是不一样的。

  爱思考的的人可能就会问,子类继承了父类,重写了父类的方法,那么在子类中能不能调用父类中被子类重写的方法或覆盖的变量呢?这就要说到super关键字和this关键字了。