java中抽象类和接口的区别
1、什么是抽象类
抽象修饰类的时候表示是一个抽象类,这个类不能实例化;
如果一个类中有抽象方法,那么这个类一定是一个抽象类;
如果一个抽象类可不可以没有抽象方法?可以的;
抽象类出现的目的就是为了继承;
抽象类一般用在哪里?一个抽象类一般作为工具类;
抽象类中的抽象方法目的就是为了覆盖;
抽象的方法,不能使用private修饰;
抽象类包括抽象方法和非抽象方法。
如果父类是一个抽象类,当子类继承父类的时候,要实现抽象的方法,如果不实现的话,那么子类就必须是一个抽象的类。
抽象类(abstract class)的定义方式如下:
public abstract class AbstractClass //里面至少有一个抽象方法
{
public int t; //普通数据成员
public abstract void method1(); //抽象方法,抽象类的子类在类中必须实现抽象类中的抽象方法
public abstract void method2();
public void method3(); //非抽象方法
public int method4();
publi int method4 (){
…… //抽象类中可以赋予非抽象方法方法的默认行为,即方法的具体实现
}
public void method3(){
…… //抽象类中可以赋予非抽象方法方法的默认行为,即方法的具体实现
}
}
2、什么是接口
接口是多态的一种形式
接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建,【接口名】 【对象名】=new 【实现接口的类】,这样你像用哪个类的对象就可以new哪个对象了,不需要改原来的代码,就和你的USB接口一样,插什么读什么,就是这个原理。就像你问的,都有个method1的方法,如果我用接口,我上面就可以one.method1();是吧?那样我new a();就是用a的方法,new b()就是用b的方法,这样很方便。这个就叫统一访问,因为你实现这个接口的类的方法名相同,但是实现内容不同。
我用接口来定义对象不就可以做到统一访问了吗?接口主要针对多个类实现它来说的,要是只有一个类当然可以不用接口了.你这样想,我做一个USB接口,有个read()抽象方法,然后mp3类实现,U盘类实现,移动硬盘类实现,这样我用的时候用USB a=new 【类名】;这样a.read();要是我类名里写U盘,就读U盘,写mp3就读mp3,而这个名字可以从属性文件里读,你写哪个就用哪个了。
接口(interface)的定义方式如下:
public interface Interface
{
static final int i; //接口中不能有普通数据成员,只能够有静态的不能被修改的数据成员,static表示全局,final表示不可修改,可以不用static final 修饰,会隐式的声明为static和final
public void method1(); //接口中的方法一定是抽象方法,所以不用abstract修饰
public void method2(); //接口中不能赋予方法的默认行为,即不能有方法的具体实现
}