黑马程序员_java的面向对象(对第七课继承..抽象类..接口及fianl应用总结)

------- android培训java培训、期待与您交流! ----------

 

通过今天对java语言面向对象的学习,我来给自己的学习内容做下简单直白的总结:

首先,我来总结下面向对象的三大特性的第二特性:继承

当多个类中有共性的内容时,我们可以它们的共性内容抽取出来,单独封装进一个类中,只让那多个类与该类产生关系即可...继承的好处:

提高了代码的复用性...让类与类之间有了关系,正应为有了关系,才有了多态的特性...

注意:必须是类与类之间有所属关系才能继承,所属关系:谁是谁中的一种(就是父类的内容是否为子类应该具备的)

 

java语言中:java只支持单继承,不支持多继承..因为会带来安全隐患:比如当多个父类中定义了相同的功能,功能内容不同的时候,子类对象会不确定要运行哪一个...虽然java不支持多继承,但保留了这种机制,用另一种形式来体现:多实现...

java不仅支持单继承,还支持多层继承..也就是继承体系。如果想使用继承体系:先查阅最顶层的父类功能,定义最底层的子类对象去使用功能...

扩展:java中不仅仅只有继承关系,还有一种关系:聚集关系(就是谁里面有谁的关系)

聚合:比如球队里面有球员,事物的联系程度一般..

组合:比如人身体里面有心脏,事物的练习程度非常紧密..

 

 

当继承出现后,子和父类当中的成员变量,成员方法以及构造方法的特点总结:

当子父类中出现非私有同名变量时:

子类对象要访问本类中的变量用:this(代表本类对象的引用)

子类对象要访问父类中的变量用:super(代表父类对象的应用)

当子父类中出现同名的方法时:

当子类对象要调用该同名方法时,会运行子类方法的内容..这就是函数的里一个特性:覆盖...

覆盖的规则:子类覆盖父类时,必须要保证子类的权限等于或大于父类的权限,还有静态只能覆盖静态..

子父类中的构造方法(继承中,子类的实例化过程步骤):

子父类的构造方法不存在着覆盖特性...当子类的对象进行构造方法初始化的时候,父类的构造方法也会运行,因为子类的构造方法的第一行,默认有一条隐式的语句:super()..并且是子类的所有构造方法默认第一行都有...

注意:如果要去访问指定的父类构造方法,那么要在子类的构造方法第一行:使用super()语句手动的去定义被指定访问的父类构造方法...

扩展:为什么子类对象在初始化时一定要访问父类的构造方法:因为父类的数据子类可以直接获取,所以子类在创建对象的时候,要先去查看父类是如何对这些数据进行初始化的...

 

 

对用于定义类以及类中的成员修饰符final的总结:

final可以修饰类,成员变量以及成员函数..

被final修饰的类不可以被继承..

被final修饰的方法不可以被覆盖...

被fianl修饰的变量是一个常量,只能赋值一次,既可以修饰成员变量,也可以修饰局部变量...



对于抽象类的总结:(抽象类其实意思就是看不懂的类,类都看不懂,是没办法创建对象的)

当多个类中出现了相同的功能,但功能的主体内容不同,我们就可以进行向上抽取,只抽取功能定义,而不抽取功能主体内容..但抽取的功能定义在类中是不完整的,我们需要一个关键字:abstract来修饰...

注意:如果一个类中的成员方法被abstract(抽象)所修饰,那么该类也要被abstract(抽象)所修饰上...被abstract(抽象)所修饰的类,是不能创建对象的...

综合上面对抽象类的一些总结,我们可以发现抽象类所具备的特点:

1,抽象方法一定是定义在抽象类中的...(因为方法被abstract所修饰了,那么该类也一定会被abstract所修饰)

2,结合第1点我们就可以看出:抽象方法和抽象类都被abstract关键字所修饰...

3,抽象类不可以创建对象..(因为对象调用抽象的方法没有任何意义)

4,重点:抽象类中的抽象方法要被使用,必须要有子类继承它,去复写其所有的抽象方法后,建立子类对象去使用..

注意:如果该子类只覆盖了部分抽象方法,那么该子类也会是一个抽象类...

扩展:抽象类中也可以有非抽象方法...抽象类强迫的让继承它的子类去做一些事情(子类不去做,那子类也是抽象类)



对于接口的总结:

初期,我们可以把接口理解成是一个特殊的抽象类..当抽象类中方法全都是抽象的,我们可以以接口的形式来体现..

格式特点:

class用于定义类,interface用于定义接口..

接口里常见的定义:常量,抽象方法...它们都有固定的修饰符:

常量:public static final...(不写修饰符也可以,系统会默认的帮你加上)

方法:public  abstract....(不写修饰符也可以,系统会默认的帮你加上)

注意:接口中的成员都是public ,覆盖的时候要注意权限问题...

接口的特点:

1,一个类可以实现多个接口..一个类在继承一个类的同时,还能实现对个接口...接口与接口之间存在着多继承关系..

2,接口是对外暴漏的规则...(实现一个接口,就相当于符合了这个接口的规则)

3,接口是功能的扩展..(基本体系共性内容,放在类中...特有的功能放在接口中,以便达到功能的扩展)



在设计模式中,之前我总结了单例设计模式,下面来总结下模板方法设计模式:

在定义功能的时候,功能的一部分是确定的,一部分是不确定的,当确定的部分在使用不确定的部分时,我们可以将不确定的部分暴漏出去,由继承该类的子类去完成..比如下面的代码图例:

通过上述代码,我们可以看出:模板我们是确定好了,但放什么进去我们不清楚,全由后面的子类去决定...

父类中,如果你已经有了默认内容的处理方式,可以不用把shou()方法抽象,而是定义自己默认好的内容。当子类不愿意去使用默认内容的处理方式时,可以再选择覆盖,定义自己的内容...



通过本课的学习,以上我对面向对象的继承理解,继承出现后子父类中成员特点,抽象类和接口的应用,还有final关键字应用及模板设计模式的一一总结,希望能对自己和大家提供些小小的帮助..








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值