首先明白为什么要继承?
(1)继承关系是传递的。若类C继承类B,类B继承类A,则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。 (2)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。 (3)继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。 (4)继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。 (5)提供多重继承机制。从理论上说,一个类可以是多个一般类的特殊类,它可以从多个一般类中继承属性与方法,这便是多重继承。Java出于安全性和可靠性的考虑,仅支持单重继承,而通过使用接口机制来实现多重继承。
子类继承父类之后只能重写父类中的protected和public方法,默认没有修饰词的是friendly,同样可以重写,但是private方法就不能重写,即使子类中的方法名和父类的private方法一致,也只能看做是一个新的方法,而不是重写。
override也就是重写,覆写。
package ex;
public class Father {
public Father()
{
System.out.println("这是父类的构造方法");
}
public void name()
{
System.out.println("这是父类里的name!!!");
}
}
package ex;
public class Son extends Father {
Son()
{
System.out.println("这是子类的构造方法");
}
public void name()
{
System.out.println("这个是子类里的name!!!");
}
}public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
Son ss=new Son();
ss.name();
}
}
执行结果:这是父类的构造方法这是子类的构造方法
这个是子类里的name!!!
- //InheritTest.java 使用继承方式实现目标
- class Animal{
- private void beat(){
- System.out.println("心脏跳动...");
- }
- public void breath(){
- beat();
- System.out.println("吸一口气,呼一口气,呼吸中...");
- }
- }
- //继承Animal,直接复用父类的breath()方法
- class Bird extends Animal{
- //创建子类独有的方法fly()
- public void fly(){
- System.out.println("我是鸟,我在天空中自由的飞翔...");
- }
- }