方法覆盖可以被很好的利用,用于修改基类成员的方法。
方法覆盖保持了基类对象的接口,而采用了衍生层的实现。
方法重载 : 同名方法参数不一样
在该构造方法中:
由于在创建衍生对象的时候,基类对象先被创建和初始化,所以,基类的构造方法应该先被调用。我
们可以使用super(argument list)的语句,来调用基类的构造方法。
基类对象创建之后,开始构建衍生层 (初始化衍生层成员)。这和一般的构建方法相同,参考构造方法
与方法重载
extends
method overriding
protected
super.member, super()
声明为public的类数据成员,可以利用class.field的方式或者object.field(如果存在该类的对象)的
方式从外部直接访问。
如果一个方法声明为static,那么它只能调用static的数据和方法,而不能调用非static的数据和方
法。
final关键字的基本含义是: 这个数据/方法/类不能被改变了。
final基本类型的数据: 定值 (constant value),只能赋值一次,不能再被修改。
final方法: 该方法不能被覆盖。private的方法默认为final的方法。
final类: 该类不能被继承。
static field, static method
class.static_method()
final
interface为类提供了接口规范。
接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型。
interface Cup {
void addWater(int w);
void drinkWater(int w);
}
interface MetriCup extends Cup
{
int WaterContent();
}
在Java类的继承中,一个衍生类只能有一个基类。也就是说,一个类不能同时继承多于一个的类。在Java中,interface可以同时继承多于一个interface,这叫做多重继承(multiple inheritance)。
interface Player
{
void play();
}
我们新增一个MusicCup的接口。它既有Cup接口,又有Player接口,并增加一个display()方法原型。
interface MusicCup extends Cup, Player
{
void display();
}
当一个类中出现abstract方法时,这个类的声明必须加上abstract关键字,否则Java将报错。一个abstract类不能用于创建对象。
我们可以像继承类那样继承一个抽象类。我们必须用完整的方法定义,来覆盖抽象类中的抽象方法,否则,衍生类依然是一个抽象类。
抽象类的定义中可以有数据成员。数据成员的继承与正常类的继承相同。
interface继承,多重继承
abstract method, abstract类
Human aPerson = new Human(160);
创建了一个Human类的对象aPerson。
上面是一个非常简单的表述,但我们有许多细节需要深入:
首先看等号的右侧。new是在内存中为对象开辟空间。具体来说,new是在内存的堆(heap)上为对象开辟空间。这一空间中,保存有对象的数据和方法。
再看等号的左侧。aPerson指代一个Human对象,被称为对象引用(reference)。实际上,aPerson并不是对象本身,而是类似于一个指向对象的指针。aPerson存在于内存的栈(stack)中。
当我们用等号赋值时,是将右侧new在堆中创建对象的地址赋予给对象引用。
这里的内存,指的是JVM (Java Virtual Machine)虚拟出来的Java进程内存空间。
在 Java中,所有的(普通)对象都储存在堆上。因此,new关键字的完整含义是,在堆上创建对象。
引用比喻成放风筝,引用和对象的关系就像风筝和人。我们看天空时(程序里写的),看到的是风筝(引用),但风筝下面对应的,是人(对象)。分离引用和对象。
将一个引用赋值给另一个引用,并不能复制对象本身。
垃圾回收的基本原则是,当存在引用指向某个对象时,那么该对象不会被回收; 当没有任何引用指向某个对象时,该对象被清空。它所占据的空间被回收。
参数传递:实际上,我们传递的参数,一个是基本类型的变量,另一个为对象的引用。
基本类型变量的值传递,意味着变量本身被复制,并传递给Java方法。Java方法对变量的修改不会影响到原变量。
引用的值传递,意味着对象的地址被复制,并传递给Java方法。Java方法根据该引用的访问将会影响对象。
new
引用,对象
被垃圾回收的条件
参数: 值传递
对杯子编程和对喝水编程。
基本类型转换
polymorphism
downcast
Object