一.抽象类的概念
在编写一个类时候,往往会给它定义一些属性或方法,但是有的时候,某些方法只知道应该
存在,但是不知道它如何实现,那么该类就是抽象类,这些不知道具体如何实现的方法就叫做抽象方法。
抽象类的抽象方法都是等待子类去继承然后子类去重写父类的抽象方法。
抽象的关键字: abstract
定义抽象类: public abstract class { }
定义抽象方法: public abtract 返回类型 方法名(参数列表);
1.抽象类中可以没有抽象方法,可以有具体的方法。
2.抽象方法只能存在于抽象类中。
3.如果某子类继承了一个抽象类,那么该子类必需要重写父类的抽象方法。
二.抽象方法
/*
创建一个Teacher抽象类,内部含有一个抽象方法work。
(原因:每个老师都上不同的课,所以该方法没有具有的代码,而是等子类去重写)
然后创建一个MathTeacher类,EnglishTeacher子类,去继承该Teacher类。
然后重写抽象方法。
*/
public static void main(String[] args) {
EnglishTeacher et = new EnglishTeacher();
et.work();
MathTeacher mt = new MathTeacher();
mt.work();
}
public class EnglishTeacher extends Teacher{
public void work() {
System.out.println("我在上英语课");
}
}
public class MathTeacher extends Teacher{
public void work() {
System.out.println("我在上数学课");
}
}
public abstract class Teacher {
public abstract void work();
public void a() {
System.out.println(111);
}
}
三.接口
接口的相关概念:
如果存在某个抽象类中全是抽象方法,而没有具体的方法,那么就可以将该抽象类彻底改成接口。
接口:只有抽象方法的一个特殊的类。
语法如下:public interface 接口名{ 抽象方法... }
由于接口中只能存在抽象方法,那么在书写接口中的方法如下:
返回类型 方法名(参数列表); //可以省略public abstract 默认就是这两个。
创建一个接口名为Usb的接口,内部有一个方法名叫work。
创建一个类名为Phone的类和Computer的类,去实现该Usb接口,
然后重写该接口内的方法。
接口和抽象类的区别:
关键字:接口是interface 抽象类是:abstract
接口是等待实现类去实现。 抽象类是等待子类去继承
接口不是一个类。 抽象类是一个类。
抽象类里面可以存在普通方法。
接口里面不能存在普通方法。
public interface Usb {
void work();
}