关于对象的产生
Java中,通过类型声明是无法得到一个内存中的对象的(这一点与C++不一样),通过类型声明得到的只是对象的一个“指针”而已,只有通过new关键字才会在内存中产生一个真正意义上的对象,系统在堆中为这个对象分配存储空间。
如Java.lang.string类,声明string类的一个实例,仅仅获得了一个string的指针,必须new一个新的字符串或者指向一个字符串常量才算指向一个真正的字符串对象。
关于static
Java中的static和C++中的概念一致,“static var”和“static func()”本质上都是内存布局的问题。
用static声明的变量和方法实质上是对类中各个对象共享资源的一种描述。
全局变量的本质不也可以看成是一种共享资源吗?
Lesson 04A 面向对象高级特性
1. 关于继承
(1)Java中继承需使用关键字“extend”,C++则使用冒号“:”
//Java 的继承
class Students extends Person
{
}
//C++ 的继承
“`c++
class Students : class Person
{
}
<pre><code class="line-numbers">(2)Java中不支持多继承
(3)this代表本类,super关键字代表父类
### 2.关于全局变量
Java中没有称为 全局变量 的东西。
声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。
### 3.关于接口(interface)
(1) 接口的内涵
接口是Java相较C++的一个不同的概念,接口本质是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有变量和方法的实现。
<font color="#0000dd">(UML中的interface是不是也是同样的概念?class可直接转换为interface)</font>
(2) 接口的定义和特点
接口的定义方法如下:
“`java
interface A
{
int ID = 1;
void run();
}
接口中的成员都是public访问类型的,“变量”默认都是用public static final标识的。
(3) 接口的应用
既然是一个抽象类,对其进行应用必须进行具象化。
(接口应用的本质就是继承)
- 接口的进一步扩展
利用继承,即定义一个新的接口用extends关键字去继承一个已有的接
(与C++中对待抽象基类方法一致)
(用派生接口去继承基类接口,则派生接口也是一个接口,也是抽象类?) -
接口的实现
定义一个类,用implements关键字去实现一个接口中所有的方法。
也可以定义一个抽象类,用implements关键字去实现一个接口中定义的部分方法。
一个类可以实现多个接口。