1、方法的重写
与重载区分:
重载(overload):参数的个数或者类型不一样。
重写(overwrite)、(override):
(1)适用范围:子类根据需要从基类中继承来的方法进行重写。
(2)重写的方法必须和被重写的方法具有相同的方法名称、参数列表以及返回 类型。
(3)重写的方法不能使用比被重写的方法的有更严格的访问权限。
2、用super来引用当前对象的父类对象的引用。
而this则是对当前对象的引用。
图片左边是堆内存,右边是栈内存。
图片
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)