类的继承和重写

来源:互联网 发布:网络尔雅课程 编辑:程序博客网 时间:2024/05/20 02:30

  继承是java面向对象的三大特征之一,它的关键字是extend。这个单词的意思其实是“扩展”,由此我们可以把继承理解为一个类去扩展另一个类,其中被扩展的类称为父类,实现扩展的类叫做子类。在继承关系中子类会得到父类的所有参数或是方法,此外子类还可以扩展自己的参数或方法。

  比如水果类和苹果类,苹果类扩展了水果类,因此水果类是父类,苹果类是子类。它的格式是这样的:

public class friut (){
  System.out.println("这是一个水果类");
}
public class apple extends friut(){
  System.out.pritnln("这是一个苹果类");
}

  值得注意的是,java中的继承是单继承,这里说的单继承并不能理解为一个子类只能有一个父类,一个子类可以有多个间接父类,但是直接父类只能有一个,就是说:

public class apple extend friut1,friut2....{
}    //是错误的


  说到继承有一个东西不得不提到,那就是重写,什么是重写?我们来看这样一个场景:
   有一个bird类,其中定义了一个会飞的方法,再创建一个hen类去继承bird类,我们都知道母鸡属于鸟类,但是鸟是会飞的,而母鸡不会飞,但是又继承了bird类中的会飞这个方法,显然是不行的,此时我们就需要改写bird类中的方法。


public class bird {
public void fly(){
   System.out.println("鸟是会飞的");
}
}

public class henextends bird{
public void fly(){     //重写父类fly方法
   System.out.println("母鸡是不会飞的");
}
public void fly1(){
super.fly();      //用super调用父类fly方法
}
public static void main(String[] args) {
hen he=new hen();
he.fly();

he.fly1();

  }

}


上面这个例子就用到了重写,子类hen 类重写了父类bird类中fly方法,可以知道子类中的fly方法被覆盖了。
重写的时候我们需要注意一下三点:        
 (1).重写的方法必须和原方法的方法名相同,参型列表相同(包括参数名,顺序和类型)       
 (2).子类的访问访问权限应该比父类的大        
 (3).如果父类中的某个方法是pirvate的,那么子类不能重写此方法


重写中还有一个super关键字很重要,super 的作用是直接调用父类中的方法。在上面我们说到父类中的方法在子类中被重写了,那么就无法访问父类中的原方法,但有些情况下需要用到父类中原方法时就可以用super来调用。 在上面的例子中母鸡是不会飞的,但是有一天它突然变异了它会飞了,此时我们又改写了fly方法,这种情况下还是需要调用父类中fly方法。                                                                            
                                                                                                            注:参考资料疯狂java讲义(电子工业出版社)




0 0
原创粉丝点击