天天看点

c 子类对象 访问父类对象受保护成员_Java之面向对象_继承

c 子类对象 访问父类对象受保护成员_Java之面向对象_继承

好的,我们今天来谈谈什么是继承吧,为什么要使用继承呢?

为了减少重复性的代码,类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。
  • 可以有效的提高代码的复用性!
  • extends的意思是“扩展”。子类是父类的扩展
  • 继承的其他叫法:超类,父类,基类,子类,派生类
  • 如图所示:
c 子类对象 访问父类对象受保护成员_Java之面向对象_继承
总了个小结如下:
  1. 我们通过继承可以简化类的定义,实现代码的重用
  2. 子类继承父类的成员变量和成员方法,但不继承父类的构造方法。
  3. java中只有单继承,没有像c++那样的多继承。
  4. java中的多继承,可以通过接口来实现
  5. 如果定义一个类时,没有调用extends,则它的父类的java.lang.Object
继承的特性:
单根性,在Java中,类的继承是单继承,一个类只能有一个直接父类。 传递性,例如:C继承于B,B继承于A,C也具有A的特性和行为。 即子类继承父类,子类拥有父类非私有的属性和方法。

super 关键字

super表示父类,它只是一个简单的关键字,用于引用父类。super没有内存地址,其不包含引用。
super访问父类非私有属性
public 
           

访问修饰符

分为四种:private,default(默认),protected,public

各自修饰符作用的范围如下:

c 子类对象 访问父类对象受保护成员_Java之面向对象_继承
  • public:公共的,访问权限最大。
  • protected:受保护的,子类都可见,同包可见
  • 默认:包访问权限,同包可见。
  • private:私有的,只有本类可见。
访问权限依次为:private<默认<protected<public

方法的重写

当子类继承子类的方法不能满足自身需要的时候,子类可以重写父类的同名方法。

重写可根据重写的程度分为完成重写和部分重写。

完全重写:当父类继承过来的方法完全不满足子类需要时。
public 
           
部分重写:当继承父类的方法还可以满足自身需要时,但还需要改进。
public 
           

方法重写的规则:

  1. 方法存在继承关系
  2. 方法名相同,参数列表相同
  3. 方法的返回值要么和父类相同,要么是其(父类的)子类。
public 
           

4.访问修饰符不能比父类更小。即private方法不能被继承,就不可能有重写。

注意:构造方法不能被重写,因为重写构造方法,因为构造方法和类重名,子类不可能和父类重名。

方法重写和重载的区别:

c 子类对象 访问父类对象受保护成员_Java之面向对象_继承

抽象类

在继承过程中,C extends B extends A,整个继承过程形成继承链。在继承链的过程中,位于顶端的类越来越抽象,位于末端的类越来越具体,整个过程形成继承金字塔。
抽象方法
当一个类定义一个方法根据自身特性无法实现时,可以把该方法声明为抽象方法(abstract method),该抽象方法所在的类称为抽象类(abstract class)。
抽象方法的语法
[修饰符] abstract 返回值类型 方法名(形参列表);
抽象类语法
[
           

注意:

  1. 抽象类不能实例化=>抽象类限制实例化。
  2. 抽象方法一定位于抽象类中,抽象类中可以没有抽象方法。
  3. 子类继承抽象父类,一定要实现抽象类中的抽象方法,除非子类也是抽象类。

方法的实现:

子类继承抽象父类,必须重写抽象父类中的抽象方法,是对抽象父类中抽象方法的完全性重写。我们把这个过程称为方法的实现。实现是一种特殊的重写。

c 子类对象 访问父类对象受保护成员_Java之面向对象_继承

好了,今天大饼我就先分享到这吧,我们下期见~

继续阅读