目录
MOOC +《JAVA入门第二季》+ 第3章 继承
3-1 Java中的继承
3-2 Java中的方法重写
1)定义
2)语法规则
3-3 Java继承的初始化顺序
3-4 Java继承中final关键字的使用
3-7 Java中super关键字的使用
1)作用
2)应用
3-8~3-9 Java中的Object类
(1)定义
(2)重要方法
1)概念
继承是类与类的一种关系,是一种“is a”的关系
2)只有单继承
3)好处
a、子类拥有父类的所有属性和方法【属性和方法的修饰符不能为private】
b、实现代码复用
4)语法规则:
【class 子类 extends 父类】
如果子类对继承父类的方法不满意,是可以重写父类继承的方法,调用时会优先调用子类的方法。
a、返回值类型
b、方法名
c、参数类型及个数
都要与父类继承的方法相同,才叫方法的重写。
使用final关键字做标识有“最终的”含义。
final可以修饰类、方法、属性和变量
1)修饰类
该类不允许被继承。
2)修饰方法
该方法不允许被重写(覆盖)。
3)修饰属性
该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)。
4)修饰常量
该变量只能被赋一次值,即成为常量。
在对象的内部使用,可以代表父类对象。
访问父类方法:super.eat();
访问父类属性:super.age;
子类的构造过程中必须调用其父类的构造方法,相当于super();;
如果子类的构造方法中没有显式调用父类的构造方法,则系统默认调用父类无参的构造方法;
如果显式的调用父类的构造方法,必须在子类的构造方法第一行中添加super();
如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错,如果父类是定义了有参的构造方法,那么子类必须super.(父类的参数),或者父类中添加一个无参的构造方法,否则出错 因为默认调用的是super();是无参的。
子类的构造的过程当中必须调用其父类的构造方法 相当于super();默认是调用无参的 如果子类的构造方法中没有显示调用父类的构造方法,系统会默认调用父类无参的构造方法. 如果要显示的调用父类的构造方法,必须在子类的构造方法第一行中添加super(); 如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错,如果父类是定义了有参的构造方法,那么子类必须super.(父类的参数),或者父类中添加一个无参的构造方法,否则出错 因为默认调用的是super();是无参的。 一个类中没有定义构造方法,则系统会默认为此类定义一个无参的构造方法.如果自定义了一个带参的构造方法,则系统不会为其添加无参的构造方法.
Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类,且Object类中的方法适合所有子类。
1)toString()方法
在Object类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串) 如果我们在代码里面直接输出一个对象,会输出这个对象在内存中的地址,我们把它称为哈希码,哈希码是通过哈希算法生成的一个字符串用来唯一区分对象的。
可以通过重写toString()方法表示出对象的属性 (我们经常在输出对象的时候希望得到子类的属性值,那么我们就要重写从父类继承来的toString()方法,eclipse中右键菜单栏-源码source-生成generate toString(),他就会根据我们对象的属性帮我们生成一个toString()方法来输出属性值)
2)equals方法----返回值是布尔类型
比较的是对象的引用是否指向同一块内存地址-------对象实例化时,即给对象分配内存空间
使用方法如:dog.equals(dog2);
如果是两个对象,但想判断两个对象的属性是否相同,则重写equals()方法 :