黑马程序员技术交流社区
标题:
抽象类和接口
[打印本页]
作者:
student
时间:
2013-5-27 20:46
标题:
抽象类和接口
本帖最后由 student 于 2013-5-27 20:53 编辑
抽象类和接口之间,存在许多相识之初,所以这里将两者放到一起分析。
一、抽象类
1.
抽象类就是由关键字abstract定义的类。
2.
不可用创建抽象类的对象,只能创建其非抽象的子类对象。
3.
抽象类中可以定义抽象方法,也可以定义非抽象方法,抽象方法一定定义在抽象类中。
4.
继承抽象类的类,是该抽象类的子类,子类必须覆盖抽象类的所有抽象方法。
如果子类只覆盖部分抽象方法,那么该子类还是抽象类。
例子:
//抽象类
abstract class Animal {
//抽象方法:只定义方法,没有方法体
abstract public void method1();
//非抽象方法
public void method2() {
System.out.println("抽象方法");
}
}
//子类:继承抽象类Animal
class Dog extends Animal {
//子类必须覆盖抽象方法
public void method1() {
System.out.println("子类覆盖父类抽象方法");
}
}
复制代码
二、接口
1.
接口是由关键字interface定义的类,接口可以理解为一个特殊的抽象类。
2
.
接口中的成员(成员方法和成员变量)都必须是public的,接口的方法可以是抽象的,也可以是非抽象的。
3.
接口不能创建对象,因为只有抽象方法。
4.
接口需要给子类实现,子类通过关键字implements来实现接口。
5.
子类必须覆盖接口中的所有抽象方法和非抽象
方法
。
例子:
//接口
interface Machine {
//抽象方法,只有方法声明,没有方法体
abstract public void method1();
//非抽象方法,只有方法说明,没有方法体
public void method2();
}
//实现接口
class Car implements Machine {
//实现接口的抽象方法
public void method1() {
System.out.println("method1");
}
//实现接口的非抽象方法
public void method2() {
System.out.println("method2");
}
}
复制代码
当抽象类中的方法都是抽象方法时,该抽象类可以定义为接口。
作者:
曾林魁
时间:
2013-5-28 07:02
顶一个dcvc
作者:
明月几时有
时间:
2013-11-5 23:12
“接口的方法可以是抽象的,也可以是非抽象的。”文中这句话可不对哦,但是最后一句又是对的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2