目录
抽象类定义和性质
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。
父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。
在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口
抽象类定义代码实例
在 Java 语言中使用 abstract class 来定义抽象类。如下实例:
public abstract class Employee
{
private String name;
private String address;
private int number;
}
抽象类定义规则
1.抽象类和抽象方法必须用abstact关键字来修饰
2.抽象类不能直接实例化,也就是不能直接使用new关键字产生对象
People p = new People(); //错误,People是抽象类,无法实例化
3.抽象方法定义时,只需要声明,不需要实现
4.含抽象方法的类必须被声明为抽象类,抽象类的子类必须实现所有的抽象方法后,才能被实例化,否则这个子类还是个抽象类
接口
接口是一种与类相似的结构,用于为对象定义共同的操作
接口在许多方面都与抽象类相似,但他的目的是指明相关或者不相关类的对象的共同行为。例如,使用适当的接口,可以指明这些对象是可比较的、可食用的或者可克隆的。
接口的定义
·接口定义的通用格式:
public interface 接口名称 {
}
(方法头...)
}
·接口中的所有方法都是public,抽象方法。 一个类可以实现一个或者多个接口。
接口中的属性
·一个接口可以有属性: 在接口中的所有属性都为 public、final 和 static.
·因为他们会自动地变为 final, 所以你必须为它们提供初始化值。
public interface Doable
{
int FIELD1 = 1, FIELD2 = 2;
(Method headers...)
}
·在这个接口中, FIELD1 和 FIELD2 是 public final static int 变量。
·任何实现这个接口的类都可以访问这些变量。
继承接口
`与类的继承类似,接口之间也可以继承
`接口只能继承接口,而不能继承类
`类的继承类似,接口的继承也表达了“is-a”的逻辑
`与类只能继承一个父类不同,接口可以继承多个父接口,彼此以逗号隔开(各父接口的顺序可任意),表达的逻辑是子接口既是一种父接口1,也是一种父接口2,… 。
抽象类与接口的比较
-->从语法层面
抽象类与接口是Java提供的对现实世界中的实体进行抽象的两种机制,二者具有很大的相似性,同时也具有明显的区别。