Java 继承学习资料

来源:互联网 发布:学党史知国情心得体会 编辑:程序博客网 时间:2024/04/29 06:49

继承相关的概念
什么是继承
父类、子类
子类继承父类的成员属性或者成员方法,子类通过继承可以获得父类的属性和方法
在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 父类类型

原创粉丝点击