抽象类(abstract)
当多个类出现相同功能,但是功能内容不同,这时可以进行向上抽取,只抽取功能定义,而不抽取功能主体.
抽象类特点
1. 抽象方法一定在抽象类中,
2. 抽象方法和抽象类必须被 abstract 关键字修饰,
3. 抽象类不可以new对象,因为抽象类的抽象方法没有具体执行体.
4. 抽象类一被继承,.子类必须将所有抽象方法重写,如果还有抽象方法没有重写,则子类还是个抽象类,不能够创建对象
- 特殊:抽象类可以不定义抽象方法,这样做仅仅是不让该类建立对象
代码演示-----
//抽象类,person类不能new对象,
abstract class person {
abstract public void study();
//抽象类中可定义正常函数,也可以不定义抽象函数
public void walking() {
System.out.println("行走");
}
}
class students extends person {
//重写了父类抽象函数
public void study() {
System.out.println("学习语数英知识");
}
}
接口(interface)----提高功能拓展性
接口:可以理解为是一个特殊的抽象类,所以接口不可以new对象,且子类需要重写接口所有抽象方法才可以new对象…当抽象类中的方法都是抽象时.那该类可以通过接口的形式表示
接口思想特点:
1. 接口是对外暴露原则
2. 接口是程序的功能拓展
3. 实现了模块开发,定义好规则,每个人实现自己需要的模块,大大提高了开发效率
4. 接口与实现类之间具有多态性.
接口与接口之间可以被继承(extends),一个接口可以继承多个接口 (接口的多继承) ,一个类可以实现多个接口 (类的多实现)
class用于定义类…interface 用于定义接口
接口常见定义:常量,抽象方法
接口中成员都有固定的修饰符,常量: public static final,方法: public abstract
抽象与接口的区别
------成员变量:
- 抽象类能有变量,也能有常量…
- 接口只能有常量
-成员方法
- 抽象类可以有非抽象方法,也可以有抽象方法
- 接口只能有抽象方法
构造方法
- 抽象类有构造方法
- 接口没有构造方法
代码演示----
/*
* 学生类不能吸烟,
* 工人类可以吸烟,可以开车
* 额外定义"吸烟"接口给需要的类实现就行了*/
abstract class Person {
abstract public void study();
//抽象类中可定义正常函数,也可以不定义抽象函数
public void eatting() {
System.out.println("吃东西");
}
}
//定义"吸烟"接口
interface Smoking{
double PI=3.1415; //public static final 可省略不写
void smoke(); //public abstract 可省略不写
}
//定义"开车"接口
interface DriveCar{
void driveCar();
}
class Students extends Person {
//重写了父类抽象函数
public void study() {
System.out.println("学习语数英知识");
}
}
class Woker extends Person implements Smoking,DriveCar{//一个类只能继承一个类,但可以实现多个接口
public void study(){
System.out.println("学习技能知识");
}
public void smoke(){
System.out.println("吸烟");
}
public void driveCar(){
System.out.println("开车");
}
}