在现实生活中,我们经常听到“继承”二字,这两字通常存在于父子之间。在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关键字了。请听下回分解。