20180904work

一、继承的概念
1.继承的来源
(1)继承来源于生活
(2)如果不用继承,代码可能会混淆属和行为,也有可能出现代码重复的问题,以及扩展性无法提升的问题
2.继承的概述:在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类。
已有的类称为父类,而新类称为子类。父类也可以称为基类、超类,子类也可以称为派生类
3.辨别是不是继承关系:使用”is..a”关系判断
4.一个类使用关键字extends继承其它类
(1)被继承的类:父类,基类,超类
(2)不能继承父类私有的属性和行为
5.子类,派生类
(1)子类可以继承除了父类私有的属性和行为,以及构造函数之外的内容
(2)子类可以扩展新的属性,以及新的行为
(3)还可以重写父类的方法
6.优点
(1)扩展性
①子类可以扩展父类的属性和方法
②父类的属性和方法可用于子类
(2)代码的可重用性

二、java中继承的实现方式
1.当两个或多个类是不相同的,但是共享相同特征的时候,将共同的元素从类中拿出来,放到一个父类中,每个子类中又保留了不同的特征
2.一个类使用关键字extends继承其它类,但是,父类的私有属性不能继承,父类的构造函数无法继承
3.在内存里,先创建父类的存储空间,再创建子类存储空间
4.子类是否可以访问父类中的成员变量和方法,取决于访问修饰符

三、单继承和多继承
1.单继承
(1)java中,一个类只能有一个父类
(2)Java可以实现多实现
(3)优点:结构清晰,血脉纯净
2.多继承
某些OOP语言,例如C++允许子类有多个父类

四、类和类的关系
1.继承
2.实现
3.部分和整体
(1)组合
(2)聚合
4.关联关系
5.依赖
6.所有类的超类:object
五、子类实例化
1.使用new实例化
2.但是要记住:并非先创建一个父对象,在创建一个子对象
3.而是只创建了一个对象,先给父类的属性分配空间,然后再叠加子类的私有属性,而是只创建了一个对象,先给父类的属性分配空间,然后再叠加子类的私有属性

六、方法重写

1.遵循三个原则
(1)子类的方法的返回值的类型、方法名和形式参数列表,必须和父类中的是相同的(如果子类中的方法与父类中的方法同名,但是子类的方法改变了形式参数列表,那么这是方法重载,而不是方法重写)
(2)访问修饰符必须不小于父类中的访问修饰符。例如,如果父类的方法是public,那么子类的必须是public。如果父类的方法是protected,那么子类必须是protected或public(public比protected访问权更大)。
(3)子类中重写的异常不能抛出比父类更多的异常
2.重载和重写的区别
(1)重写:子类中的方法与父亲中的方法相同(方法名称,参数类表,返回类型)
(2)重载:一个类中的方法与另一个方法相同,参数列表不同,是编译器的静态实现
(3)重写体现的是父亲与子类方法之间的联系;重载体现的是一个类的内部方法之间的联系
3.==和equals
(1)==
①==代表如果两边的数据类型是基本数据类型,那么直接比较值是否相等,
②如果两边的数据类型是引用数据类型,那么比较引用是否相等
(2)Equals
①equals表示引用过后值是否相等
②默认情况下,调用的是object.equals(),这个方法比较的对象的引用是否一致,但是在某些特殊的业务场景中,我们也可以重写该方法
七、构造方法与继承
1.this.
(1)访问本类其他属性和方法
(2)访问继承自父类的属性和方法
(3)this.的作用范围:可以操作本类的所有属性和方法,还可以操作来自于父类的属性和方法
(4)this.作用范围大于super.的作用范围,可以直接使用this.
2.this()
this()代表本类中其他的构造函数
3.super()
super()代表父类的构造方法,必须放置在第一排,如果程序不显示写出,编译器也会默认添加上。添加在子类构造器的第一行
4.super.
super.的作用范围:只可以操作来自于继承自父类的属性和方法

八、final关键字
两种用法
1.final类。一个类可以声明为最终类的。最终类不能被有子类。
(1)变量不能修改
(2)类不能继承
2.final方法。一个方法可以声明为最终的。最终方法不能被重写这里写图片描述

猜你喜欢

转载自blog.csdn.net/Lsy_Coder/article/details/82388110
今日推荐