抽象类
关于抽象类的理论认识。
- 有的方法不能被实现,这样的方法称为抽象方法。
- 但凡是又抽象方法的类都叫做抽象类。
- 抽象方法和类的关键字:abstract
**注意:**抽象类可以没有抽象方法但是抽象方法必须要又抽象类。
抽象方法虽然不能直接实现,但是可以用它的子类方法来实现。
例如:
//定义一个抽象类Animal
abstract class Animal{
//定义一个抽象方法 shout ()
pulic abstract void shout () ;
}
//定义一个 Dog 继承抽象类 Animal
class Dog extends Animal {
//实现抽象方法 shout () ,编写方法体
public void shout () {
System.out.println ("汪汪汪") ;
}
}
// 定义一个测试类
public class Example {
public static void main ( String [] args ) {
Dog dog = new Dog () ; //创建Dog类的实例对象
dog . shout () ; // 调用 dog 对象的 shout () 方法
}
}
接口
关于接口的理论认识:
- 如果一个抽象类中全是抽象方法,则称为 “接口”。
- 接口中有一个不是抽象方法就不能叫接口。
- 在后续版本中,接口中可以有默认方法( default修饰 )和静态方法 ( static 修饰)且允许有方法体。
- 接口定义和类不一样,使用的是 inteface 而不是class。
注意:接口中的抽象方法可以省略abstract。
例如:
// 定义一个 Animal 接口
interface Animal {
int ID = 1; // 定义全局
void breathe () ; // 定义抽象方法 breathe ()
// 定义一个默认方法
default void getType (String type) {
System.out.println ("该动物属于 :" + type);
}
// 定义一个静态方法
static int getID () {
return Animal .ID;
}
}
// Dog 类实现了 Animal 的接口
class Dog implements Animal {
// 实现了breathe () 方法
public void breathe () {
System.out.println ("狗在呼吸");
}
}
// 定义测试类
public class Example {
public static void main(String[] args) {
System.out.println(Animal.getID()); // 通过接口名调用方法
Dog dog = new Dog(); // 创建 Dog 类的实例对象
System.out.println(dog.ID); // 在实现类中获取接口全局变量
dog.breathe(); // 调用 dog 对象的 breathe() 方法
dog.getType("犬科"); //通过接口实现类 Dog 的实例化对象,调用接口默认方法
}
}