抽象类与接口区别
2016-07-16 10:53
190 查看
抽象类:
抽象类无法实例化(即不能new)。使用抽象方法,该方法是只需声明不需要实现。抽象方法需要定义在抽象类中,一个类包含抽象方法,这个类一定是抽象类。如果某个类是抽象类,他可以有具体方法(有声明,有实现),也可以有抽象方法。子类继承父类(该父类为抽象类)就要实现该父类的所定义的所有抽象方法,否则该子类也要定义为抽象类。抽象类中的变量可以只定义不赋值(static)。并且可以在子类中更改。抽象方法默认为public ,需要在方法前面加入abstract。抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
代码:public class main{
// b b=new b();
// b.a();
c c=new c();
c.c();
}
abstract class a{
private int a;
abstract void a();
void ss(){
System.out.println(“haha”);
}
}
abstract class b extends a{
abstract void c();
void d() {
}
}
class c extends b{
@Override
void c() {
// TODO Auto-generated method stub
System.out.println(“ccc”);
}
接口:
接口里的方法不能实现,只能声明是;而接口的属性不但要定义,还要赋值,。抽象类实现接口不需要实现接口里面的方法。而普通类实现接口就要实现接口里面的所有方法。接口可以多实现,但类只能单继承,接口是为了弥补单继承的缺点。接口中的方法只能为public,接口中可以定义“成员变量”,或者说是不可变的常量,因为接口中的“成员变量”会自动变为为public static final。可以通过类命名直接访问:ImplementClass.name。
代码:public class jiekou {
}
interface a{
String a=”asd”;
void a();
void c();
}
abstract class b implements a{
int number=12;
int a=0;
abstract void d();
}
class c extends b{
@Override
void d() {
// TODO Auto-generated method stub
System.out.println(number+” “+a);
}
}
两者的区别:
1.抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部行为进行抽象。
2.一个类只能继承一个抽象类,而一个类却可以实现多个接口。
3.抽象类中的方法可以实现,但接口中的方法只能声明不能实现。
4.抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
抽象类无法实例化(即不能new)。使用抽象方法,该方法是只需声明不需要实现。抽象方法需要定义在抽象类中,一个类包含抽象方法,这个类一定是抽象类。如果某个类是抽象类,他可以有具体方法(有声明,有实现),也可以有抽象方法。子类继承父类(该父类为抽象类)就要实现该父类的所定义的所有抽象方法,否则该子类也要定义为抽象类。抽象类中的变量可以只定义不赋值(static)。并且可以在子类中更改。抽象方法默认为public ,需要在方法前面加入abstract。抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
代码:public class main{
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub
// b b=new b();
// b.a();
c c=new c();
c.c();
}
}
abstract class a{
private int a;
abstract void a();
void ss(){
System.out.println(“haha”);
}
}
abstract class b extends a{
abstract void c();
void d() {
}
}
class c extends b{
@Override
void c() {
// TODO Auto-generated method stub
System.out.println(“ccc”);
}
@Override
void a() {
// TODO Auto-generated method stub
}
接口:
接口里的方法不能实现,只能声明是;而接口的属性不但要定义,还要赋值,。抽象类实现接口不需要实现接口里面的方法。而普通类实现接口就要实现接口里面的所有方法。接口可以多实现,但类只能单继承,接口是为了弥补单继承的缺点。接口中的方法只能为public,接口中可以定义“成员变量”,或者说是不可变的常量,因为接口中的“成员变量”会自动变为为public static final。可以通过类命名直接访问:ImplementClass.name。
代码:public class jiekou {
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stubint aa;
c c=new c();
//c.number=12;
//c.c();
c.d();
}
}
interface a{
String a=”asd”;
void a();
void c();
}
abstract class b implements a{
int number=12;
int a=0;
abstract void d();
}
class c extends b{
@Override
void d() {
// TODO Auto-generated method stub
System.out.println(number+” “+a);
}
@Override
public void a() {
// TODO Auto-generated method stub
}@Override
public void c() {
// TODO Auto-generated method stub
}
}
两者的区别:
1.抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部行为进行抽象。
2.一个类只能继承一个抽象类,而一个类却可以实现多个接口。
3.抽象类中的方法可以实现,但接口中的方法只能声明不能实现。
4.抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
相关文章推荐
- java接口概述
- Java接口特征与细节
- Java中几个容易混淆的相似概念和关键字的区别与用法梳理
- java接口与抽象类的区别
- 接口
- Java7特性中,abstract class和interface有什么区别
- <Java>接口与抽象类,区别以及使用场景
- JavaSE基础知识思维导图
- 接口与抽象类
- linux 下的访问目录文件权限
- CSS背景background详解,background-position详解
- php的<?php ?>标签匹配
- mac下将根目录/更改组到普通用户,导致sudo不能用
- html中车牌号省份简称输入键盘
- eclipse 中间的编辑代码区域显示与取消空格等特殊符号
- linux菜鸟学习(三)----find
- orbslam作者的ppt
- orbslam作者的ppt
- 关闭Cadence Orcad Capture CIS原理图弹出startpage页面的方法
- iOS开发-pod install 出错 The dependency `AFNetworking (~> 2.6.0)` is not used in any concrete target.