Java
fred
多态性
静态多态性(重载)
动态多态性:子类和父类都定义了相同声明的成员方法封装性
面向对象的基本特征
使得各个对象的外在表现仅仅为对一些成员变量的访问方式和一些成员方法的调用方法。屏蔽具体的内部实现方法。
类成员的控制方式有,public,protected,
默认模式,private.
具体见 P84的表 3.1(了解)
static
静态的属于类的。
静态方法:类名直接调用,也可以由对象调用。
静态变量:类名直接调用,也可以由对象调用。
静态方法静态变量
Abstract(抽象)
抽象方法
比如 abstract void draw();
抽象方法没有方法体;
应用呢?
抽象类抽象类
abstract 类不能用运算符 new 创建对象
abstract类的类体中可以有 abstract方法,abstract方法允许声明,而不允许实现。如:
abstract void draw();
abstract class A
{
……
…..
}
Continue
如果一个非 abstract类是一个 abstract类的子类,它必须具体实现父类的 abstract方法,即重写父类的 abstract方法。
abstract 类可以没有 abstract方法,但如果一个类中含有 abstract方法,那么这个类必须用 abstract来修饰
一个 abstract类只关心它的子类是否具有某种功能,并不关心功能的具体行为,
功能的具体行为由子类负责实现。
final关键字
在类的声明中使用 final
– JAVA允许在类中使用 final,被定义成 final的类不能再派生子类,
在成员方法声明使用 final
– 被定义成 final的方法 不能被重写。
在成员变量的声明中使用 final
– 基本就称为常量
– final int NUMBER=100;
例子
final 修饰的变量一旦被赋值,不能再改变接口
JAVA不支持多继承的。即一个类只有一个父类。 (extends 后只能一个父类)
单继承使得 JAVA简单,易于管理程序。
但是单继承过于简单,为了克服这一缺点,JAVA使用了接口。一个类可以实现多个接口
关键字 interface来定义一个接口
接口的定义与类定义非常相似
CONTINUE
1),接口声明:
intereface 接口的名字;
2),接口体
接口中包含 常量定义 和 方法定义 两部分。接口体中只进行方法的声明,不允许方法的实现,
所以方法的定义没有方法体,如:
interface Printable
{
final int MAX=100;
void add();
float sum(float x,float y);
}
Continue
3) 接口的使用:
一个类通过使用关键字 implements 声明自己实现一个或多个接口。如果实现多个接口用逗号隔开接口名如,class A implements Printable,Addable
Continue
如果一个类实现某个接口,则这个类必须实现接口的所有方法,即为这些方法提供方法体。
在类中实现接口的方法时,方法的名字、返回类型、参数个数及类型必须与借口中的完全一致。
注意:接口中的方法默认是,public 和 abstract
的。接口在声明方法时可以省略,但是类在实现该接口方法时,public 不能省略。
接口回调
使用某一个接口的类 创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口中的方法。
当接口变量调用被类实现的接口中的方法时,
就是通知相应的对象调用借口的方法,这一过程称为对象功能的接口回调。
接口回调可以实现多态!
例子总结
面向对象语言的 3个基本特征:
– 封装
– 继承
– 多态判断
构造方法一般不允许有任何返回值,因此需要在返回类型处标注为 void
任何类都必须显示地定义该类的构造方法,以便对类的成员进行各种初始化操作
如果在定义一个类的时候没有用到关键字
extends,则这个类没有直接父类
Java语言规定:任何一个子类的构造方法都必须调用其父类的构造方法(包括隐式),并且调用父类构造方法的语句必须是子类构造方法的第一条语句
抽象方法不能含有方法体,并且必须在抽象类中
抽象类是不能实例化的。抽象类的实例化,应当通过其不具有抽象属性的子类来创建