JAVA学习之继承篇(四)

本文是笔者学习JAVA的一些笔记。

Posted by 南三号 on August 25, 2017

一. 继承相当于:is a

比如狗类继承至动物类,即狗是一种动物

二. 注意:

  • 子类继承父类的所有public属性和方法
  • Java继承是单继承,即只有一个父类

三. 语法规则:

使用extends关键字

//子类继承父类
class <子类> extends <父类>{
}
//狗类继承动物类
class Dog extends Animal{
}

四. 父类方法重写

子类对父类方法不满意,进行重写。

注意:

返回值类型,方法名,参数类型及个数都要与要重写的父类方法相同。(即除了方法内容,都要一样)

五. 继承初始化顺序

  • 初始化父类再初始化子类(先执行父类构造方法,再执行子类构造方法)
  • 先执行初始化对象中属性,再执行构造方法中的初始化。 譬如:
    //对动物的年龄进行初始化
    public class Animal{
      public int age=10;
      public Animal( ){
        age=20;
      }
    }
    //结果:实例化的对象年龄为20
    
  • :创建一个有一个父类的类的实例化对象,顺序应该是: 创建一个父类对象→父类属性初始化→父类构造方法→创建子类对象→子类属性初始化→子类构造方法

六.final关键字

  • 意思

最终的,完结的。

  • final修饰类

    该类不能被继承。(即为最终最底层的类)

  • final修饰方法

该方法不能被重写(覆盖)。(即为最终的已经写完的方法)

  • final修饰属性

    该类的这个属性必须在属性初始化或者构造方法初始化的时候进行赋值(只能赋值一次,且只能而且必须在一处,要么属性初始化,要么构造方法,不能都进行赋值,也不能都不赋值,以前说属性会自动赋值0,但是加了final关键字之后就不会自动赋值)

  • final修饰变量

    只能在声明变量时进行赋值。(只能赋值一次)即变为常量。 示例:

final public class Animal( ){
    final public age=10;
    final public void eat( ){
    }
}

七. super关键字

  • 意思:父类

  • 注意:

  1. 子类的构造方法中必须调用父类的构造方法。
  2. 如果子类的构造方法没有显式调用父类的无参的构造方法,则系统默认调用父类无参的构造方法。
  3. 如果显式调用父类构造方法,必须在子类构造方法的第一行。
  4. 如果子类构造方法中没有显式调用父类的构造方法,因为会默认调用父类的无参构造方法,而如果父类定义了有参的构造方法而没有定义无参的构造方法,因为定义了有参所以系统不会自动生成一个无参的,所以会报错。

【视频链接】:慕课网Java-super的使用

八. Object类

ps:所有类的老祖宗,如果没有使用extends关键字继承某个类,则默认继承Object类。

哈希code码:对象地址字符串(唯一区分对象)

常用的方法:

  • toString( ) 默认返回对象的哈希码。 如果直接输出对象名,就会执行toString( )方法,输出对象的哈希码。
  • equals( ) 比较对象的引用是否指向同一块内存地址。即两个是不是同一个实例化对象。 如果要比较两个不同实例对象的各个属性相不相同。可以重写equals( )