A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© artemis0927 初级黑马   /  2018-6-17 08:59  /  1074 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于继承的学习的心得

面向对象的三大特征
1.封装性
2.继承性
3.多态性
继承是多态的前提,如果没有继承,就没有多态

继承的格式
在继承的关系中,子类就是一个父类。也就是说,子类可以被当做父类看待
例如父类是员工,子类是讲师,那么讲师就是一个员工。关系:is -a、

定义父类的格式:(一个普通的类)
public class 父类名称{
        //...
}
定义子类的格式:
public class 子类名称 extends 父类名称{
        // ....
}

继承的特点
父类也叫基类,超类
子类也叫派生类
继承主要解决的问题就是:共性抽取
子类可以拥有父类的内容
子类还可以拥有自己专有的内容
单继承,多级继承


子类调用父类的成员特点

//在父子类的继承关系当中,如果成员变量重名,则创建子类对象是,访问有两种方式

1.直接通过子类对象访问成员变量
等号左边是谁,就优先用谁,没有则向上找。
2.间接通过成员方法访问成员变量
该方法属于谁,就优先用谁,没有则向上找。


1.调用成员变量的特点
局部变量:                        直接写成员变量
本类的成员变量:        this.成员变量       
父类的成员变量:        super.成员变量
以上三种写在一起要放在子类的方法当中
2.调用成员方法的特点
在父子类的继承关系当中,创建子类对象,访问成员方法的规则;
创建的对象是谁,就优先用谁,如果没有则向上找。

//注意事项
//无论成员方法还是变量,如果没有都是向上父类找,绝对不会向下找子类

方法覆盖重写的概念

1.重写(Override):在继承关系中,方法的名称一样,参数列表也一样。//覆盖
2.重载(Overload):同一个类中。方法的名称一样,参数列表不一样

方法的覆盖重写特点:创建的是子类对象,则优先用子类方法
注意事项
1.必须保证父子类之间方法的名称相同,参数列表也相同
2.写在方法前面,用来检测是不是有效的正确的覆盖重写 @Override
3,子类方法的返回值必须[小于等于]父类方法的返回值范围。
Object类的所有类的公共最高父类(祖宗类),java.lang.String就是Object的子类。
4.子类方法的权限必须大于等于父类方法的权限修饰符
public > protected > (default) > private
(default)不是关键字,而是留空,不写。

设计原则
对于已经投入使用的类,尽量不要修改,
推荐一个新的类,来重复利用里面的共性
并且添加改动新内容

继承中的构造方法的访问特点
1.子类构造方法当中有一个默认隐含的"super()"调用,所以一定先调用父类的构造,后执行子类
2.可以通过super关键字来调用父类重载构造
注意事项
子类必须调用父类构造方法,不写则赠送一个super();
写了则用写的指定的super调用,super只能有一个,还必须是第一个。
super的三种方法
1.在子类的成员方法中,访问父类的成员变量。

2.在子类的成员方法中,访问父类的成员方法。

3.在子类的构造方法中,访问父类的构造方法。
//注意事项:
//子类的构造方法可以访问父类的成员变量和成员方法
this关键字的三种用法
1.在本类的成员方法中,访问本类的成员方法

2.在本类的成员方法中,访问本类的另一个成员方法。

3.在本类的构造方法中,访问本类的另一个构造方法。
在第三种用法当中要注意
A.this(...)调用也必须是构造方法的第一个语句,唯一一个。
B.super和this两种构造方法,不能同时使用。

抽象方法和抽象类的格式
抽象方法:就是加上abstract关键字,然后去掉大括号
抽象类:抽象方法所在的类,必须是抽象类才行。在class之前写上abstract即可
public abstract class Animal(){
        //抽象方法,代表吃东西,但是具体吃什么(大括号的内容)不确定。
        public abstract void eat();
       
}
如何使用抽象类和抽象方法:
1.不能直接创建new抽象类对象。
2.必须用一个子类来继承抽象父类。
3.子类必须覆盖重写抽象父类当中所有的抽象方法
覆盖重写(实现):子类去掉抽象方法中的abstract关键字,然后补上大括号
4.创建子类对象进行使用
注意事项
1.抽象类不能创建对象,如果创建,编译无法通过而报错。
2.抽象类中有构造方法,这个构造方法不上用来创建对象,是用来初始化抽象类中的数据。
3.抽象类中不只有抽象方法 还可以有普通方法。
4.子类继承抽象类的时候一定要覆盖重写所有的抽象方法,如果不重写所有的方法
那么这个子类一定是抽象类。
5.抽象类中可以有成员变量




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马