在进入抽象类和接口的内容前,先必要了解一下java中类和方法的分类,以及各种类和方法的用法和注意事项
一、方法分类
构造方法:public 类名(){}
用途:用于类对象的创建和属性方法的初始化
普通方法:public 返回类型 方法名(){}
用途:定义类对象的行为,要干啥
抽象方法:public abstract 返回类型 方法名();
用途:抽象方法没有具体的方法实现,用于被继承时重写。
二、类的分类
补充:属性类型:常量(public static final 类型 变量名 = 值,不可变)、变量(可变)
类分类:
普通类:public class 类名{}
方法:只能有普通方法和构造方法,一定不能有抽象方法
属性:可以随意定义变量和常量
构造对象:可以构造对象
抽象类:public abstract class 类名{}
方法:三种类型的方法都可以存在
属性:可以随意定义变量和常量
构造对象:不能构造对象
接口:public interface 类名{}
方法:只能有抽象方法,一定不能有普通方法和构造方法(接口没有构造方法)
属性:只能是常量
构造对象:不能构造对象
下表是关于三种类的用法类型
| 构造方法 | 普通方法 | 抽象方法 | 常亮 | 变量 | 创建对象 |
普通类 | √ | √ | × | √ | √ | √ |
抽象类 | √ | √ | √ | √ | √ | × |
接口 | × | × | √ | √ | × | × |
//A.java
public class A{
//普通类
public String name;//变量
public static final int age = 20;//常亮
public A(){}//构造方法
public void study(){}//普通方法
}
//B.java
public abstract class B{
//抽象类
public String name;//变量
public static final int age = 20;//常亮
public B(){}构造方法
public void study(){}//普通方法
public abstract void play();//抽象方法
}
//C.java
public interface C{
//接口,全部为抽象方法,常量
//abstract和static final可以省略
//没有构造方法
public static final int age = 20;
public static final String name = "aa";
public abstract void study();
public abstract void play();
}
注意:接口中的属性常量的修饰词static final可以省略
接口中的抽象方法的修饰词abstract可以省略
抽象类和接口有什么用?
用于被继承,当父类,不是用来创建对象的,而是约束子类方法定义
三、接口的继承
子类继承抽象和和接口的时候:一定要把父类的抽象方法,全部重写一遍
普通类继承抽象类:extends
普通类继承接口:implements
温馨提示:
如果以后大家遇到接口类,只能老老实实写个子类,去继承接口,并把方法都实现
//D.java
public class D extends B{
public void play(){}//重写方法
}
//E.java
public class E implements C{
public void study(){}//重写方法
public void play(){}//重写方法
}