08面向对象高级特性一

什么是继承

v      继承性是面向对象程序设计语言的另一基本特征,通过继承可以实现代码的复用。继承而得到的类为子类,被继承的类为父类(超类),父类包括所有直接或间接被继承的类。

v       子类可继承父类中的变量及方法,也可定义其自身特有的变量及方法。

v      Java中不支持多重继承。

什么是继承

v      通过在类的声明中加入extends子句来创建一个类的子类:

    class SubClass extends SuperClass{

            ……

    }

v      如果缺省extends子句,则该类为java.lang.Object的子类,Object类是所有类的父类.

扫描二维码关注公众号,回复: 6668261 查看本文章

v     Java是单继承

继承性

v      子类可继承父类方法和变量.

 

                     同一个包中         不同包中的子类

private

default                 ★

protected             ★                   ★

public                   ★                 ★

变量隐藏及方法重写原则

v      变量隐藏原则:

              子类中变量名与继承自父类的变量名相同时,则继承自父类的变量将被隐藏。

 

v      方法重写原则:

v      子类有个方法与父类的方法完全一致叫做重写

§        重写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。

§        改写后的方法不能比重写的方法产生更多的例外。

变量隐藏示例

v      变量隐藏即指在子类中重新定义父类中

       已有的变量;

方法重写(覆盖)

v      方法重写即指在子类中重新定义父类中

              已有的方法;

super关建字作用

v      调用构造方法:

   super()必须是子类构造函数第一个执行的语句,如果super()没有被用到,每个超类的默认的或无参数的构造函数将被执行。

 

v      调用被隐藏变量及方法:

  可通过super关键字调用被隐藏的父类中的变量及方法。

super关建字使用格式

v      访问父类被隐藏的成员变量,

       如:

              super.variable;

v      调用父类中被重写的方法,如:

              super.Method([paramlist]);

 

v      调用父类的构造函数,如:         super([paramlist]);

多层次继承

Java 不支持多继承,可多层次继承。

构造方法调用

v      在类层次结构中,构造方法以派生的顺序调用,从超类(父类)到子类

final关键字

v      final在类之前

       表示该类是最终类,表示该类不能再被继承。

v      final在方法之前

       表示该方法是最终方法,该方法不能被任何派生的子类覆盖。

v       final在变量之前

       表示变量的值在初始化之后就不能再改变;相当于定义了一个常量。

 

 

要点补充:

1:Eclipse的简单使用

       A:配JDK与JRE环境

       window-->preferences-->java--->InstallJRES。

       选择add配置一个JDK的的环境。并勾选。

       B:新建一个工程,选择将源文件与输出文件分开

       C:使用快捷键

       Ctrl+Shif+F

       Ctrl+Shif+O

       Alt+/(CtrL+Space)

       Ctrl+/             注释

       Ctrl+Shift+/    反注释

       改快捷键

       window-->preferences-->General--->Keys--->ContentAssisant

       D:导入工程

       import-->General--->ExistingProjects into WorkSpace.

 

面向对象的特性

       封装       继承       多态

 

封装:

       定义:

       通过对象的封装,实现了模块化和信息隐藏。

       通过对类的成员施以一定的访问权限,实现了类中成员

       的信息隐藏

 

       注意点:

       对象自已该做的一些事情与方法不能交与其它类去实现。

      

       将内部的实现隐藏化。别人不用去关心内部怎么实现。

 

       只要调用方法就可以得想结果。

 

继承:

继承的特性:

 

     A:通过继承可以实现代码的复用。子类可以继承父类中的变量及方法。

 

       前提:父类访问修饰符的控制对继承的影响:

      

       1.父类私有的属性与方法不能被子类继承。

 

       2.Default/public/protected:同一包子类中可以访问。

               public/protected:不同子类中可以访问。

 

     B:父类包括所有直接或间接被继承的类。

     Animal

       |

       |

       ∨

      Dog

       |

       |

       ∨

      Dog_WangCai 

      

     C:子类不但继承父类的属性和方法,也可以拥有自已新增的属性与方法。

 

     D:Java中不支持多继承。(在Java中可以使用接口来模拟多继承的方式)。

       多继承带来的问题:如果使用多继承,父类中都拥有相同的方法时,虚拟机无法判断是调用哪一个父类的方法。

 

 

 

使用继承所带来的问题:

 

1:变量的隐藏

       当一个类继承另一个类时,将继承父类的对象属性与类属性。

       当子类中新增属性时,如果子类新增的属性与父类的属性名称

       一致时,(类中不可能出现相同名称的属性)。父类的属性将

       被自动隐藏。

 

2:方法的重写

       当子类继承父类时,拥有父类的方法。

       调用时,肯定是调用父类的方法。如果子类不满意父类的实现

       可以重写父类的方法。

      

       重写的原则:

 

       1:返回值,方法名称,方法的参数必须要跟父类一致。

       2:子类重写的方法不能比父类拥有更严格的访问权限。(>=父类的访问权限)

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

 

3:super关键字

       1.在类的构造方法中,通过super关键字调用这个类的父类的构造方法

              super():调父类的构造方法。这段代码必须写在子类构造方法的第一行。

              如果父类的构造方法有参数。

              super(参数值):

 

       2.在子类中访问父类的被屏蔽的方法和属性

              super可以用于调用父类的属性与方法和构造方法。

              super.XXX:调用父类的属性。

              super.XXX():调用父类的方法。

 

重写和重载区别

1.重写参数类型和个数一样,

2.重写要求返回类型必须一样,重载没要求

3.重写用于子类覆盖父类的方法,方法重载用于同一个类的所有方法

4.父类的方法只能被子类重写一次,而同一方法所在的类可以被重载多次

5.重写对方法的的访问权限和抛出的异常有特殊要求

 

继承的利弊和使用原则

1.继承树的层次不可太多(2-3)

2.继承树的上层为抽象层

3.最大弱点:打破封装

4.精心设计用于被继承的类

  1.良好的文档说明

  2.封装细节,private

  3.不允许子类覆盖的变为final

  4.父类的构造方法不允许调用可被子类覆盖的方法

 

转载于:https://my.oschina.net/u/2552902/blog/543877

猜你喜欢

转载自blog.csdn.net/weixin_34232617/article/details/92326288
今日推荐