JAVA第六周学习总结

201711671102 曾燃亮 《java程序设计》第6周学习总结

教材学习内容总结

第五章 子类与继承

一.子类与父类

继承是一种由已有的类创建新类的机制。定义一个共有属性的一般类(父类),再定义一个具有特殊属性的子类,子类继承一般类的属性和行为。java不支持多重继承,所以子类只有一个父类

1.子类

class 子类名 extends 父类名{

。。。}

2.类的树形结构

Object是所有类的祖先类。如果一个类(除了Object类)的声明中没有使用extends关键字,这个类被系统默认为是Object的子类,即类声明“class A”=“class A extends Object”。

二.子类的继承性

类的重要成员:成员变量和方法。

继承中不可以降低访问权限 

 高-->低

public protected 友好的 private

1.子类和父类在同一包中的继承性

同一个包中,子类继承父类中不是private的成员变量和方法,访问权限不变。

2.子类和父类不在同一个包

父类private和友好的不会被子类访问,也就是说不可继承private和友好的成员变量和方法

三.子类与对象

1.子类对象的特点

子类中海油一部分方法是从父类继承的,这部分方法可以访问父类中private的成员变量(间接访问)

2.instanceof运算符

当左边的对象是右边的类或者子类创建的对象时,instanceof运算的结果是true,否则是false

四.成员变量的隐藏和方法重写

当子类所声明的成员变量的名字和父类继承的一样时(声明类型可以不同),子类会隐藏所继承的成员变量。

1)子类对象以及子类自己定义的方法操作与父类同名的成员变量是指子类重新声明的成员变量

2)子类继承的方法所操作的成员变量一定是被子类继承或者隐藏的成员变量

2.方法重写

子类定义的方法一定是方法类型和父类一样或者是父类方法类型的子类型,并且这个方法名字、参数个数、参数的类型和父类完全相同。

重写目的:为了隐藏继承的方法

重写方法无法操作被子类隐藏的成员变量和方法。除非用super关键字。

重写的方法的类型可以是父类方法类型的子类型,即不必完全一致

五.super关键字

1.用super操作被隐藏的成员变量和方法

P122

注:当super调用被隐藏的方法时,该方法中出现的成员变量是被子类隐藏的成员变量或者继承的成员变量

2.使用super调用父类的构造方法

子类不继承父类的构造方法。因此要用super来调用父类的构造方法,而且super必须是子类构造方法中的头一条语句。

如果子类中没有明显写出super关键字来调用某个构造方法,那么默认有:super();这个是调用无参的构造方法

例子P124(你会看明白的)

当父类定义了其他的构造方法时java不提供默认的构造方法,所以 一定要写一个无参的构造方法,以防止省略super时出现错误。

六.final关键字

final关键字可以修饰类,成员变量和方法中的局部变量

1.final类

final类不能被继承,即不能有子类。

final class A{

。。。}

2.final方法

如果用final修饰一个父类的方法,那么这个方法不能被重写

3.常量

如果成员变量或者局部变量被修饰为final,那他就是常量。常量声明时没有默认值,所以一定要给值

七.对象的上转型对象

把子类的对象的引用放到父类对象中

1)上转型对象不能操作子类新增的成员变量,不能调用新增的方法

2)上转型对象可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或者重写的实例方法。

如果子类重写了父类的实例方法,当对象的上转型对象调用这个实例方法时一定是调用了子类重写的实例方法。

八.继承与多态

多态是指父类的某个方法被子类重写时,可以各自产生自己的功能行为。

九.abstract类和abstract方法(抽象类和抽象方法)

abstract class A{

。。。}

对于abstract方法只允许声明不可以实现,而且不可以用final和abstract修饰同一个方法。也不可以用static修饰abstract方法,即abstract方法必须是实例方法。

1)abstract类中可以有abstract方法也可以有非abstract方法,普通类不可以有abstract方法。

2)abstract类不可以用new运算符创建对象

3)abstract类的子类可以是abstract类

4)abstract类的对象可以作为上转型对象

十.面向抽象编程

目的:应对用户需求的变化

核心:让类中每种可能的变化对应地交给抽象类的一个子类去负责,从而让该类的设计者不去关心具体实现,避免所设计的类依赖于具体的实现

十一.开-闭原则

教材学习中的问题和解决过程

loading。。。。。

代码调试中的问题和解决过程

loading。。。。。

感悟

java的继承和c++的继承不太一样

目标:5000行

第一周:35行

第二周:70行

第三、四周:200行

第五周:640行

第六周:150行

猜你喜欢

转载自blog.csdn.net/weixin_41936498/article/details/83317589