抽象类与接口
1.抽象类可以有构造方法,接口没有构造方法


Multiple markers at this line
	- Interfaces cannot have constructors
	- Syntax error on token "}", delete this 
	 token
2.一个子类只能继承一个抽象类,但能实现多个接口
java不支持多重继承


3.抽象类可以有普通成员变量,接口没有普通成员变量
成员变量(在类中定义, 访问修饰符 修饰符 type name = value)

Abstract methods do not specify a body

4.抽象类和接口都可有静态成员变量,抽象类中静态成员变量访问类型任意,接口只能public static final(默认)
 
5.抽象类可以没有抽象方法,抽象类可以有普通方法,接口中都是抽象方法
抽象类和普通类的区别就在于,抽象类不能被实例化,就是不能被new出来,即使抽象类里面没有抽象方法。
抽象类的作用在于子类对其的继承和实现,也就是多态;
而没有抽象方法的抽象类的存在价值在于:实例化了没有意义,因为类已经定义好了,不能改变其中的方法体,但是实例化出来的对象却满足不了要求,只有继承并重写了他的子类才能满足要求。所以才把它定义为没有抽象方法的抽象类

接口:无论你加不加abstract,所有实现指定接口的类都必须重写并实现该接口的所有方法
6.抽象类可以有静态方法,接口不能有静态方法
java8接口中可以有default类型的方法,实现类可以选择实现该方法。
jdk8已经支持接口加入静态方法,但据说是为了lambda(函数式编程)
详情:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html#section1
7. 抽象类中的方法可以是public、protected;接口方法只有public

附
| 
 特点  | 
 抽象类  | 
 接口  | 
| 
 构造方法  | 
 有  | 
 无  | 
| 
 普通成员变量  | 
 有  | 
 无  | 
| 
 普通方法  | 
 可以有非抽象的  | 
 必须是抽象的  | 
| 
 抽象方法的访问类型  | 
 public、protected和默认  | 
 只能是public的,默认public abstract  | 
| 
 静态方法  | 
 可以有  | 
 无  | 
| 
 静态成员变量  | 
 有  | 
 有 public static final的  | 
| 
 其他类  | 
 只能继承一个抽象类  | 
 可以实现多个接口  | 
| 
 应用场景  | 
代码重用 | 模块之间通信契约 | 
作者:Honey_Badger —— 觉得这文章好,点一下左下角
        
        出处:http://tk55.cnblogs.com/
        
    
posted on 2017-12-26 01:47 Honey_Badger 阅读(316) 评论(0) 收藏 举报
                
            
        
浙公网安备 33010602011771号