java基础(重写、super关键字、继承中的构造方法、JDK_API查询方法、多态、)

1、方法的重写
与重载区分:
重载(overload):参数的个数或者类型不一样。
重写(overwrite)、(override):
(1)适用范围:子类根据需要从基类中继承来的方法进行重写。
(2)重写的方法必须和被重写的方法具有相同的方法名称、参数列表以及返回 类型。
(3)重写的方法不能使用比被重写的方法的有更严格的访问权限。

2、用super来引用当前对象的父类对象的引用。
而this则是对当前对象的引用。
图片左边是堆内存,右边是栈内存。


java基础(重写、super关键字、继承中的构造方法、JDK_API查询方法、多态、)_第1张图片
图片

3、继承中的构造方法
(1)子类必须调用父类的构造方法。
(2)子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。
其中调用super(argument_list)必须写下子类构造方法的第一行。
也可以使用this(argument_list)调用本类另外的构造方法。
(3)如果子类的构造方法中没有显示地调用基类的构造方法,则系统默认调用基类的无参数的构造方法。
(4)如果子类的构造的方法既没有显示调用父类的构造方法,而基类中又没有无参的构造方法,则编译出错。

4、JDK_API的查询方法
可以去http://java.sun.com/里面的java SE里面下载一些文档(、documentation)

5、java里面的Object类
(1)Object类是所有java类的根基类。
(2)如果在类中声明没有使用extends关键字指明其基类,则默认类为Object。
(3)Class Object里面的toString()
可以进行重写。

6、hashcode的简单解释
(1)简单解释:从java虚拟机看:每一个对象都有它独一无二的哈希编码。可以通过哈希编码找到其位置。

7、Object类里面的equals方法
(1)提供定义对象是否“相等”的逻辑、
(2) 默认的定义是两个对象的引用是否相等。
(3)重写里面的equals()

public boolean equals(Object obj) {
        if(obj == null) {
            return false;
        }
        else {
            if(obj instanceof Cat) {
                Cat c = (Cat)obj;
                if(c.color == this.color && c.height == this.height && c.weight == this.weight) {
                    return true;
                }
            }
        }
        return false;
    }

8、对象的转型
(1)一个基类的引用类型变量可以指向其子类的对象。
(2)一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)
(3)可以用 引用对象 instanceof 类名【例如:obj instanceof Cat】来判断该引用型变量“指向的”对象是否就是该类或者该类的子类。
(4)子类的对象可以当做基类的对象来使用称作向上转型,反之则称为向下转型。

9、多态(动态绑定、持绑定)【Polymoph】
多态能够使程序的扩展性达到最好。具体指的是“在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际类型调用其相应的方法。”
使用多态的条件:
(1)要有继承关系
(2)要有重写
(3)父类引用指向子类对象

10、abstract
因为多态,父类被重写的方法可以不被实现。所以可以不写。
例如

public abstract void print();

要点:
(1)用abstract关键字来修饰一个类时,这个叫做抽象类。用abstract修饰的方法叫做抽象方法。
(2)抽象类不能被实例化。
(3)含有抽象方法的类必须是抽象类,抽象类必须被集成,抽象方法必须被重写。
(4)抽象方法只需被声明,不需被实现。实现是在子类重写时实现的。

11、final关键字
(1)final的变量(包含局部变量以及成员变量)的值不能被改变
(2)final的方法不能够被重写
(3)final的类不能够被继承

12、接口(interface)

你可能感兴趣的:(java基础(重写、super关键字、继承中的构造方法、JDK_API查询方法、多态、))