一、抽象类
1、抽象类的说明
- 抽象类
Java中可以定义没有方法体的方法,该方法由子类来具体实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类 - 抽象方法的特点
a.只有方法头没有方法体
b.抽象方法用abstract来修饰
c.抽象方法代表一种不确定的操作或行为
d.抽象方法不能被调用 - 抽象类的特点
a.定义中含有抽象方法的类叫做抽象类
b.抽象类用abstract来修饰
c.抽象类代表一种抽象的对象类型
d.抽象类不能被实例化
package 继承;
abstract class Demo{
abstract public void aa();
};
public class Test {
public static void main(String[] args) {
Demo d1=new Demo(){//这里看似是实例化了抽象类,但
//这其实是做了一个匿名内部类
public void aa() {
System.out.println("匿名内部类");
}
};
d1.aa();
}
}
e.抽象类中可以有具体方法,可以没有抽象方法
2、抽象类的使用
继承它,并且必须实现里面的抽象方法
package 继承;
abstract class Demo{
abstract public void aa();
};
class son extends Demo{
@Override
public void aa() {
// TODO 自动生成的方法存根
System.out.println("抽象类的使用");
}
};
public class Test {
public static void main(String[] args) {
}
}
二、接口
- 接口语法
interface 接口名{
//公有静态常亮、抽象方法
}
- 接口的特点
接口中只能存放静态常量和抽象方法
java接口是对功能的拓展
通过实现接口,java类可以实现多实现
一个类可以同时继承(extends)一个父类并且实现implements多个接口
接口与接口之间可以使用extends实现继承
三、接口和抽象类的区别
- 抽象类和具体实现之间是一个继承关系,也就是如果采用抽象类的方式,则父类和子类在概念上应该是相同的 is-a
- 接口和实现类在概念上不要求相同,接口只是抽取相互之间没有关系的类的共同特征,而不去关注类之间的关系,它可以使没有层次关系的类具有相同的行为
- 抽象类是对一组具有相同属性和行为的逻辑上有关系的事物的一种抽象,而接口则是对一组具有相同属性和行为的逻辑上不相关的事物的一种抽象