您的位置:首页 > 编程语言 > Java开发

Java 继承学习资料

2013-03-06 18:51 155 查看
继承相关的概念

什么是继承

父类、子类

子类继承父类的成员属性或者成员方法,子类通过继承可以获得父类的属性和方法

在java中只支持单继承,一个子类只能有一个父类.一个父类可以有多个子类.

c==>b==>a

继承的好处

提高代码的重用性

提高代码的扩展性和灵活性

继承的具体实现

1>将多个子类的共同特征和行为进行抽取,提升出一个父类

2>自定定义的时候通过使用extends关键字继承父类,这样子类就获得了父类的属性和方法

public class 子类 extends 父类{

}

父类不能够被子类继承的

1>private私有的成员属性和方法

2>父类的构造函数

方法重写以及注意的事项

回顾:方法重载

前提:在同一个类中的方法,

具备的条件:1>方法名相同 2>参数列表(参数个数或者参数类型不一致) 注意:与方法的返回值类型无关

方法重写(覆盖)

前提:继承关系的情况下

当子类不满足从父类继承下来的方法的时候,对父类继承下来的方法进行重写(重新定义)

需要注意的事项

1>子类重写父类的方法,必须保证方法名和参数列表要一致,还要保证方法返回值类型一致

2>被重写的方法,在子类中的访问权限和父类中的访问权限可以不一致,但是子类重写的方法

访问修饰符的权限不能比父类方法的访问权限小

3>子类重写的方法不能比父类方法抛出更多的异常

比如:父类

protected void teaching()

子类重写

protected void teaching()throws Excepiton //ERROR

super关键字以及注意事项

回顾:this关键字,代表当前对象引用

super是表示子类对父类对象的引用

super是哪来的?父类对象是怎么来的

当创建子类对象的时候,由于子类对象一旦创建,就会把父类对象的属性和方法继承下来。

所以JVM首先会自动创建父类对象,然后在创建子类对象

先会调用父类的构造函数创建对象,然后调用子类的构造函数.

JVM调用父类默认构造函数(无参的).super是jvm提供给子类对象对父类对象进行操作的一个父类对象的引用

super的使用

1>调用父类的构造函数

注意:在子类的构造函数中默认会调用父类的无参构造函数,在子类的构造函数中自动隐藏super()

解决:1>如果父类没有无参的构造函数,可以明确在子类构造函数中调用父类存在的构造函数

super();super(参数列表);

2>在父类中尽量提供一个无参构造函数,以便给子类的构造函数中调用

在子类的构造函数中,不能同时出现this和super调用构造函数

2>调用父类的方法

super.方法

3>使用父类对象的成员属性

super.属性名

-------------------------

多态特性

一个事务具备多种不同的形态,动物这一事务既可以是肉食动物也可是草食动物

例子:对教员进行面试行为

//面试java教员

public static void testTeacher(JavaTeacher teacher)

{

System.out.println("面试开始");

teacher.introduce();

teacher.teaching();

}

//面试.net教员

public static void testTeacher(NetTeacher teacher)

{

System.out.println("面试开始");

teacher.introduce();

teacher.teaching();

}

由于Java教员和net教员都属于教员,教员这一个事物有两种形态:JavaTeacher和NetTeacher(程序中的多态)

利用多态可以提高代码的扩展性和灵活性

public static void testTeacher(Teacher teacher)

{

System.out.println("面试开始");

teacher.introduce();

teacher.teaching();

}

子类对象可以自动转型为父类类型

子类类型 p1=new 子类();

父类类型 p2=p1;//自动转型

通过p2调用的方法或者是使用的成员属性,都是子类对象的,而不是父类的

父类对象转子类类型,要进行强制转换。但是运行的时候,转型可能会失败

继承本质:考虑子类和父类是否存在正确的继承关系.子类对象 is a 父类类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: