----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
抽象关键字:abstract
能修饰:类和类中的方法
抽象类和抽象方法的特点:
1.抽象方法一定在抽象类中
2.抽象方法和抽象类都必须被abstract关键字修饰
3.因为调用抽象方法没有意义,故java规定抽象类不能new对象
4.抽象类中的方法想要被调用,就要由子类复写所有的抽象方法,然后建立子类对象进行调用,如果子类只覆盖了部分抽象方法,该子类肯定还是一个抽象类
5.抽象类中可以全部为抽象方法也可以没有抽象方法
抽象类的作用场景:
抽象类与一般类并无太大区别,该如何描述事物就如何描述。只不过有些功能,不同的子类有不用的实现内容,就可以把这些方法抽象化,不定义方法主体。
例如:
/**
* 雇员类,表示公司的雇员(包括工人和经理)都有一个工作的行为,
* 但是工作的具体内容又不一样,所以把工作抽象化
*/
abstract class Employees {
abstract void work();
}
/**
*工人类,表示公司的员工,他们做的是基础性工作
*/
class Worker extends Employees {
void work() {
System.out.println("工人做基础性工作");
}
}
/**
*经理类,表示公司的经理,他们做的是管理性工作
*/
class Manager extends Employees {
void work() {
System.out.println("经理做管理工作");
}
}
public class TestMan {
public static void main(String[] args) {
Worker worker = new Worker();
Manager m = new Manager();
worker.work();
m.work();
}
}
接口关键字:interface和class同等级
接口的特点:
1.接口中的成员变量之前如果什么都不写的话都会默认加上public static final 即接口中的成员“变量”都是静态常量
2.接口中的方法之前如果什么都不写的话都会默认加上public abstract 即接口中的方法全都是抽象的
3.接口和接口之间可以多继承,这也解决了java中类之间的继承的单根性问题,一个类可以实现多个接口
4.接口的实现类必须实现接口中的全部抽象方法,否则其实现类必须是抽象类
接口的使用注意:
尽量在一个接口中只定义一个功能,这样便于程序的解耦和
例如:
/**
* Work 接口,实现我这个接口的类都会工作,无论他们是否是同一类事物
*/
interface Work {
abstract void work();
}
/**
*工人类,表示公司的员工,他们会工作
*/
class Worker implements Work {
public void work() {
System.out.println("我是工人会做工人的工作");
}
}
/**
*机器类,表示工厂的机器,他们也会工作
*/
class Machine implements Work {
public void work() {
System.out.println("我是机器会做机器的工作");
}
}
抽象类和接口的区别:
1.抽象类是类,接口是接口,不是类
2.抽象类中可以有成员变量(就口中由于加上了默认关键字,故是常量)和具体实现的方法,接口中不可以有
3.抽象类中的某个抽象方法,必须为其子类才能继承其使用,但是接口中的方法,只要实现接口即可,不需要是其子类
4.接口和接口之间可以多继承,抽象类和类之间只能单继承
5.一个类可以实现多个接口,但是只能继承一个抽象类
总结:接口较之于抽象类来说更加灵活,不用限制其实现类和其之间的关系!