首先应该明确一点的是,抽象方法必须定义在抽象类中。
先看一个抽象类的定义:
public abstract class Animal { public abstract void eat(); public abstract void sleep(); public void Smile() { System.out.println("每个动物都会微笑,因为最美!"); } }
抽象类作为一个父类,可以定义抽象方法,也可以定义一般方法。
我们在来定义一个子类:
public class Man extends Animal{ public void eat() { System.out.println("一天天就知道个吃"); } public void sleep() { System.out.println("就知道个睡"); } public static void main(String[] args) { Man obj=new Man(); obj.eat(); obj.sleep(); obj.Smile(); } }
子类Man继承了抽象类,那么就必须将其抽象方法实现,是必须,必须,不然就会报错。
抽象类和接口的区别:
子类继承了抽象类,抽象方法必须实现,然而其他其他方法可以不实现,抽象方法中也可以定义不是抽象的方法
子类实现接口,接口中默认的方法都为抽象方法,也就不能实现,一个子类可以实现多个接口,而只能继承一个抽象类,其实接口是抽象类中更为具体的一种类而言。
public interface TrafficTool { void Car(); void Airport(); void Train(); } public class LandTool implements TrafficTool { public void Car() { System.out.println("走,咋们炸汽车去"); } public void Airport() { System.out.println("走,咋们炸飞机去"); } public void Train() { System.out.println("抢火车去不去,愣货"); } public static void main(String[] args) { LandTool obj=new LandTool(); obj.Car(); obj.Airport(); obj.Train(); } }
补充接口,接口不允许任何方法定义,接口和实现完美分离。