接口:初期理解,可以认为是一个特殊的抽象类
接口可以被类多实现,也是对多继承不支持的转换形式,Java支持多实现
接口与接口之间是继承关系,可以多继承
实例
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示
interface 用于定义接口
接口定义时,格式特点:
1.接口中常见定义:常量,抽象方法
2.接口中的成员都有固定修饰符。
常量:public static final
方法:public abstract
接口中的成员都是public的
接口是不可以创建对象的,因为有抽象方法
需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化
否则子类是一个抽象类
interface Inter{
public static final int NUM = 3; //int NUM = 3;
public abstract void show(); //void show(); 这样写默认会补上
}
interface InterA{
public abstract void method();
}
calss Test implements Inter,InterA{
public void show(){}
public void method(){}
}
class InterfaceDemo{
public static void main(String[] args){
Test t = new Test();
System.out.println(t.NUM);
System.out.println(Test.NUM);
System.out.println(Inter.NUM);
}
}
接口可以被类多实现,也是对多继承不支持的转换形式,Java支持多实现
接口与接口之间是继承关系,可以多继承
interface A{
void methodA();
}
interface B extends A{
void methodB();
}
interface C extends B{
void methodC();
}
实例
abstract class Student{
abstract void study();
void sleep(){
System.out.println("sleep");
}
}
interface Smoking{
void smoke();
}
class ZhangSan extends Student implements Smoking{
void study(){}
public void smoke(){}
}
interface PCI{
public void open();
public void close();
}
class MainBoard{
public void run(){
System.out.println("mainboard run");
}
public void usePCI(PCI p){ //P引用CI p = new NetCard();//接口型引用指向自己的子类对象
if(p!=null){
p.open();
p.close();
}
}
}
class NetCard implemets PCI{
public void open(){
System.out.println("netcard open");
}
public void close(){
System.out.println("netcard close");
}
}
class DuoTaiDemo{
public static void main(String[] args){
MainBoard mb = new MainBoard();
mb.run();
mb.usePCI(null);
mb.usePCI(new NetCard());//netcard open netcard close
}
}
interface UserInfoDao{
public void add(User user);
public void delete(User user);
}
class UserInfoByJDBC implements UserInfoDao{
public void add(User user){
1.JDBC连接数据库
2.使用sql添加语句添加数据
3.关闭连接
}
public void delete(User user){
1.JDBC连接数据库
2.使用sql语句删除数据
3.关闭连接
}
}
class UserInfoByHibernate implements UserInfoDao{
public void add(User user){
1.Hibernate连接数据库
2.使用sql添加语句添加数据
3.关闭连接
}
public void delete(User user){
1.Hibernate连接数据库
2.使用sql语句删除数据
3.关闭连接
}
}
class DBOperate{
public static void main(String[] args){
UserInfoDao u = new UserInfoByJDBC();
u.add(user);
u.delete(user);
UserInfoDao u = new UserInfoByHibernate();
u.add(user);
u.delete(user);
}
}