1.抽象类与抽象方法
2.接口
1.抽象类与抽象方法
1.1 抽象方法
使用abstract修饰的方法,没有方法体,只有声明。定义的是一种规范;告诉子类必须要给抽象方法提供具体的实现。
1.2 抽象类
包含抽象方法的类就是抽象类。(抽象类中可以有自己的方法,但是接口中不行,接口中只能有抽象方法)抽象类中自己的方法可以通过继承给子类调用。
1.有抽象方法的类只能定义为抽象类
2.抽象类不能实例化,既不能用new来实例化抽象类(抽象类中的自己的方法可以给子类调用)
3.抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用
4.抽象类只能用来被继承
5.抽象方法必须被子类实现
abstract class AnimalClass{
abstract public void shot();
public void run(){
System.out.println("running");
}
}
class Pig extends AnimalClass{
@Override
public void shot() { // 抽象方法被子类实现
System.out.println("Pig 也会叫");
}
}
public class TestAbstract {
public static void main(String[] args) {
AnimalClass p1 = new Pig();
p1.shot();
p1.run(); // 抽象类中的方法可以被子类调用
}
}
2.接口
2.1 接口与抽象类的区别
抽象类还提供某些具体实现,接口不提供任何实现;接口中的方法全都是抽象方法。接口是完全面向规范的,规定了一批类具有公共方法规范。
1.普通类:具体实现
2.抽象类:具体实现,规范(抽象方法)
3.接口:规范
nterface AnimalClass{
void shot(); // 只能定义规范
}
class Pig implements AnimalClass{
@Override
public void shot() { // 必须实现接口中的抽象方法
System.out.println("Pig 也会叫");
}
}
2.2 使用方法
[访问修饰符] interface 接口名 [extends 父接口1,父接口2…] {
常量定义;
方法定义;
}
1.子类通过implements来实现接口中的规范
2.接口不能创建实例,但是可用于声明引用变量类型
3.一个类实现类接口,就必须实现接口中所有的方法,并且这些方法只能是public的
4.接口可以多继承
5.接口中的属性只能是常量;总是public static final
修饰,不写也是这个修饰。
6.接口中的方法只能是public abstract
,省略也是
网友评论