黑马程序员技术交流社区

标题: 继承-课堂笔记 [打印本页]

作者: LPStone    时间: 2015-5-8 23:30
标题: 继承-课堂笔记

继承:子类不能访问父类私有的成员
       
继承的好处和:
1、提高代码的复用性
2、让类与类之间产生了一个关系,是多态的前提。

特点:
1、java只支持单继承,不支持多继承
        (为什么?)因为如果支持多继承,不同父类的相同成员无法继承,出现调用不明的错误。
       
2、java支持多层继承


什么时候考虑使用继承?
        由于继承体现了一种关系:is a的关系。xxxx is yyyy的一种。
        如果多个类之间有is a的关系的时候,他们之间存在继承关系。
       
        发现有相同方法的时候。
注意:不要为了获取部分功能而去使用继承。


子父类间成员变量的关系
        通过子类访问一个成员变量的时候:
        1、首先在局部范围找,如果有就使用
        2、继续在成员位置找,如果有就使用
        3、最后在父类中找,如果有就使用
        4、如果还是没有,就报错。

局部变量名、本类成员变量名、父类成员变量名冲突:
        局部变量:直接输出
        本类成员变量:this.变量名
        父类成员变量:super.变量名

super关键字:和this的用法很像,代表父类的内存的空间的标识(可以理解为父亲的对象)
       
this和super的使用:
        成员变量:
                this.变量;--本类的变
                super.变量;--父类的变
        构造方法:
                this(参数);--本类的构造方法
                super(参数);--父类的构造方法
        成员方法:
                this.方法();--本类的方法
                super.方法();--父类的方法

方法的重写(覆盖):
        子类中出现与父类一模一样的方法时,会出现覆盖操作,也称作重写或复写。

注意:
1、父类中的私有方法不能被重写
2、覆盖时,子类方法访问权限必须大于等于父类方法访问权限
3、静态方法只能被静态方法重写,这个其实不能算对象的关系


面试题:重写与重载的区别?
        方法重写:
                子父类中,出现方法相同的情况。返回值,方法名,参数一模一样。

        方法重载:
                同一个类中,方法名相同,参数列表不同,跟返回值无关。

继承中的构造关系:
        子类中所有构造方法默认都去访问了父类的无参构造方法
        在子类中的构造方法中都有一行默认语句:super()
       
        因为子类会自动具备父类中的非私有数据,那么,这个数据的初始化靠父类完成
        所以会点调用父类的构造方法对数据进行初始化。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2