接口与抽象类的区别

在项目中有什么地方有使用到了 接口 和抽象类。但是只会用,不能说这怎么能行啦。

1.抽象类 2.接口 3. 抽象类和接口的区别

1. 抽象类

  1.1 抽象类的定义:
  1.2 抽象方法:
  1.3 抽象类的属性:

1.1抽象类的定义:
抽象类必须用 public abstract 修饰的(也可以不用写public 因为默认就是)
如果用 private 或者 protected 修饰的话
会出现一下的编译提示:
Illegal modifier for the class inte; only public, abstract & final are permitted
意义:抽象类将事物的共性的东西提取出来,抽象成一个高层的类。
为其子类提供一个公共的类型 封装子类中得重复内容 定义抽象方法,子类虽然有不同的实现 但是定义是一致的

抽象类中:1.可以有抽象方法 ,可以有实际方法。
2. 可以只有抽象方法。
3. 也可以只有实际方法。
4.一个类继承抽象类,必须要实现所有抽象类所有方法,如果子类没有实现父类所有抽象方法那么子类也必须用 abstract 修饰

1.2 抽象方法:
1.抽象方法的修饰符必须为public 或者 protected,如果是private 就会出现以下的(其实抽象方法本身依据类的共性而产生的,用private 修饰也就没有意义)
The abstract method ac1 in type inte can only set a visibility modifier, one of public or protected

1.3 抽象类的属性:
与平常的类没有什么区别。

2.接口:

 2.1 接口的定义:
 2.2 接口方法:
 2.3 接口的属性:

2.1 接口的定义:
意义:对行为抽象。
修饰符:interface
* 接口默认 public abstract 修饰的* 可以不写public 或者 abstract 从这里我们可以看出来 接口是一种极端的抽象形式。
接口不能有构造方法咯。

2.2 接口方法:
1.只有抽象类方法,不存在实际方法。—– 既然是对行为抽象 那么久没有具体的实现。
2.接口方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误)

2.3 接口的属性:
接口中的属性:默认 public static final (我感觉在接口中定义变量并不好,应该专门有一个专门管理常亮的类)

3. 抽象类和接口的区别

  1.抽象类可以存在有实现细节的方法并且修饰符可以有protected,public ,接口只能存在抽象方法 修饰符必须是 public abstract。
2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

  3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

  4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

写完咯,还欠一个例子,不想到网上直接找,我想通过项目中的所用技术的解读:

在占一个坑。

引用:
http://www.cnblogs.com/dolphin0520/p/3811437.html

http://peiquan.blog.51cto.com/7518552/1298448

对一些疑问的解答:
1.java中interface的方法默认修饰符是public abstract。

Java Language Specification, 3rd ed. §9.4 Abstract Method Declarations
http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html#9.4
Every method declaration in the body of an interface is implicitly abstract, so its body is always represented by a semicolon, not a block.
Every method declaration in the body of an interface is implicitly public.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值