一、抽象类:
1.关键字:abstract ;修饰抽象类,抽象方法;
2.注释:
2.1.抽象类不可以创建对象,但是可以被声明引用(强制被使用多态);
2.2.抽象类不一定包含抽象方法,包含抽象方法一定是抽象类;
抽象方法:
1.格式:abstract修饰,且没有{}方法体;因为必须被子类复写,则又方法体也没有意义;
2.注释:必须被子类复写;
3.注释:抽象方法不能用private修饰,因为抽象方法必须被实现;
//父类public abstract class father{ public abstract void study(); //无需加{};}//子类class son extends father{ void study(){ System.out.println("study"); }}public class test{ public static void main (String args[]){ new son().study(); }}
二、接口:
1.接口定义:interface; 类定义:class;
2.格式格式:只能定义公有静态常量和公有抽象方法;
(1)常量:public static final 数据类型 常量名=值;
(2)方法:public abstract 返回值类型 方法名([参数..])
//修饰符可以省略,系统会默认;
(3)接口中的三种方法:
1)抽象方法;
2)静态方法,包含方法体;jdk1.8;
3)默认方法,一般是空方法实现;jdk1.8;
3.接口特点:
(1)接口可以extends继承多个接口,类是单继承;
(2)接口内可以再定义接口;
4.接口多态:类似继承的多态创建;接口名 实例名=new 实例();
5.实现调用:
//接口interface Inter{ public static final int NUM=1; public abstract void run();}//子类class SubInter implements Inter{ public void run(){ System.out.println(123); }}public class test{ public static void main(String[] args){ SubInter t = new SubInter(); System.out.println(t.NUM);//实例调用 System.out.println(Inter.NUM);//接口名调用 System.out.println(SubInter.NUM);//类名调用 } }
6.枚举:
public enum 枚举名{实例名1,实例名2,实例名3….}
三、抽象类和接口的区别: