------- 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关键字应用及模板设计模式的一一总结,希望能对自己和大家提供些小小的帮助..