MOOC +《JAVA入门第二季》+ 第3章 继承

                 MOOC +《JAVA入门第二季》+ 第3章 继承

目录

                                                               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)重要方法


 

3-1 Java中的继承

1)概念

      继承是类与类的一种关系,是一种“is a”的关系

2)只有单继承

3)好处

        a、子类拥有父类的所有属性和方法【属性和方法的修饰符不能为private】

        b、实现代码复用

4)语法规则:

【class  子类   extends  父类】

3-2 Java中的方法重写

1)定义

    如果子类对继承父类的方法不满意,是可以重写父类继承的方法,调用时会优先调用子类的方法。

2)语法规则

        a、返回值类型

        b、方法名

        c、参数类型及个数

        都要与父类继承的方法相同,才叫方法的重写。

3-3 Java继承的初始化顺序

MOOC +《JAVA入门第二季》+ 第3章 继承_第1张图片

3-4 Java继承中final关键字的使用

使用final关键字做标识有“最终的”含义。

final可以修饰类、方法、属性和变量

1)修饰类

      该类不允许被继承。

2)修饰方法

      该方法不允许被重写(覆盖)。

3)修饰属性

      该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)。

4)修饰常量

      该变量只能被赋一次值,即成为常量。

3-7 Java中super关键字的使用

1)作用

     在对象的内部使用,可以代表父类对象。

     访问父类方法:super.eat();

     访问父类属性:super.age;

2)应用

      子类的构造过程中必须调用其父类的构造方法,相当于super();;

      如果子类的构造方法中没有显式调用父类的构造方法,则系统默认调用父类无参的构造方法;

      如果显式的调用父类的构造方法,必须在子类的构造方法第一行中添加super();

      如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错,如果父类是定义了有参的构造方法,那么子类必须super.(父类的参数),或者父类中添加一个无参的构造方法,否则出错 因为默认调用的是super();是无参的。

     子类的构造的过程当中必须调用其父类的构造方法 相当于super();默认是调用无参的 如果子类的构造方法中没有显示调用父类的构造方法,系统会默认调用父类无参的构造方法. 如果要显示的调用父类的构造方法,必须在子类的构造方法第一行中添加super(); 如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错,如果父类是定义了有参的构造方法,那么子类必须super.(父类的参数),或者父类中添加一个无参的构造方法,否则出错 因为默认调用的是super();是无参的。 一个类中没有定义构造方法,则系统会默认为此类定义一个无参的构造方法.如果自定义了一个带参的构造方法,则系统不会为其添加无参的构造方法.

3-8~3-9 Java中的Object类

(1)定义

      Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类,且Object类中的方法适合所有子类。

(2)重要方法

      1)toString()方法

      在Object类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串) 如果我们在代码里面直接输出一个对象,会输出这个对象在内存中的地址,我们把它称为哈希码,哈希码是通过哈希算法生成的一个字符串用来唯一区分对象的。

      可以通过重写toString()方法表示出对象的属性 (我们经常在输出对象的时候希望得到子类的属性值,那么我们就要重写从父类继承来的toString()方法,eclipse中右键菜单栏-源码source-生成generate toString(),他就会根据我们对象的属性帮我们生成一个toString()方法来输出属性值)

       2)equals方法----返回值是布尔类型

       比较的是对象的引用是否指向同一块内存地址-------对象实例化时,即给对象分配内存空间

      使用方法如:dog.equals(dog2);

      如果是两个对象,但想判断两个对象的属性是否相同,则重写equals()方法 :

  •  地址是否相同----if (this == obj)
  •  对象是否为空----if (obj == null)
  • getClass()可以得到类对象,判断类型是否一样-----if (getClass() != obj.getClass()) new出来的是类的对象,关注的是类的属性的具体的数据; 类对象是类的代码信息,关注的是类有什么属性和方法
  • 属性值是否一样----if (age != other.age)

你可能感兴趣的:(MOOC +《JAVA入门第二季》+ 第3章 继承)