抽象类和接口
方法分类
在写程序的过程中相信大家一定会用到方法,一个类总会写那么几个方法。比如说学生类 public class student 可以有学习的方法 public void student(){}、也可以有吃饭的方法
Public void eat(){}。这些是我们平时会用到的一些方法格式,这种格式的方法被称为普通方法,格式我们经常有写过 ——public 返回类型 方法名 (){}
除了普通方法外还有两种方法
构造方法——public 类名(){} 一般用于创建对象时
抽象方法——public abstract class 方法名(); 这种方法没有方法体,也就是没有实现,所以也可以说是没有过程的方法。
类的分类
方法是写在类里面的,类里面除了方法还会有属性类型,比如说常量和变量
常量是不会改变的,public static finally int age = 3;必须要给常量赋值,在后面的过程中,它的值是不变的
变量就像 public string name ; 后面可以给name各种赋值,这种可以改变的就做变量
无论常量或者变量都必须写在类的里面,这里说到类
我们可以把类分为三种
(1)普通类 就是我们平时见到的类 格式为 public class 类名{}
(2)抽象类 如字面意思,这种类是不实际的抽象的
格式为 public abstract class 类名 {}
(3)接口 public interface 类名{}
这三种类有相同点,也有不同点,下面我们用表格的形式来说明
| 常量 | 变量 | 构造方法 | 普通方法 | 抽象方法 | 创建对象 |
普通类 | ✔ | ✔ | ✔ | ✔ | × | ✔ |
抽象类 | ✔ | ✔ | ✔ | ✔ | ✔ | × |
接口 | ✔ | × | × | × | ✔ | × |
从表格中可以看出普通类除了不能有抽象方法,其他的都可以。抽象类除了不能创建对象其他都可以。
而接口只能拥有常量和抽象方法
在接口中,因为常量和抽象方法都有修饰词(常量是static final,抽象方法是abstract),所以在这里修饰词可以省略
接口的继承
有人或许会想我们用类来创建对象,实现方法,要接口和抽象类做什么呢?
这里要说的是抽象类和接口是用于继承的,被当作父类。子类继承抽象类和接口时,一定要把父类的方法全部重写,也就是约束了子类方法的定义,子类方法中必须有父类这种方法。
普通类继承接口的时候,因为继承会把父类的方法继承过来,也就是接口中的抽象方法。但是普通类中不能有抽象方法,所以要把这个方法重写。
例如:
Public interface A {
Public abstract void speak(); //这是个接口类,里面的方法是抽象方法
}
Public class B implements A{
Public void speak(){} //B类实现了A接口,所以要重写A接口的抽象方法
}
在继承中用到的关键字是extends,而在实现接口时用到的关键字是implements
例如 public class A extends class B{}
Public class A implements B {}
在抽象类中还可以写上普通方法和构造方法,但是如果大家写接口的时候,只能继承接口,把接口中的方法一一实现。