抽象类和接口
2016-05-30 20:10
232 查看
一 抽象类
抽象:没有具体的解决方案,不能实例化,但是提供了一个规范。
抽象类:在class前加修饰符abstract的类。在抽象类中只做规定,不具体实现某种方法,而在其子类中实现这些方法。
例如对于水果来说,我们找不到一个具体的对象来表示它,因为苹果香蕉橘子都是水果,这时就可以将水果设置为抽象类,他不能实例化。
如果在一个类中有一个或多个抽象的方法,即方法有修饰符abstract,这个类就必须是抽象的。
使用抽象类时要注意的问题:1.如果在类中的方法都是非抽象的,这个类也可以声明为抽象的。
2.在抽象类中可以有非抽象的方法。
3.不能用抽象类直接创建对象,因为抽象类不具体,不能实例化。
抽象类:
二 接口
接口是对象之间进行沟通的桥梁。它能为其他对象提供调用的规范,但是不公开实现。
接口是一种特殊的抽象类,接口中的所有的方法都是抽象的,不能有具体的实现,而是由另一个类来实现(implements)接口,重写其中的方法。
例如:对手机来说,只需要用他的比如听歌,照相等功能,而不用知道这些功能是如何实现的,就可以将这些功能设置为接口。
照相的接口:
听歌的接口
手机类
测试类:
这样就给手机添加了功能。
implements和extends的区别:前者是实现接口,可以在一个类中实现多个接口,而且必须重写接口中的所有的方法。后者是继承类,一个子类只能继承一个父类,不能多继承,而且必须满足is a的关系,子类不用完全重写父类中的方法
抽象:没有具体的解决方案,不能实例化,但是提供了一个规范。
抽象类:在class前加修饰符abstract的类。在抽象类中只做规定,不具体实现某种方法,而在其子类中实现这些方法。
例如对于水果来说,我们找不到一个具体的对象来表示它,因为苹果香蕉橘子都是水果,这时就可以将水果设置为抽象类,他不能实例化。
如果在一个类中有一个或多个抽象的方法,即方法有修饰符abstract,这个类就必须是抽象的。
使用抽象类时要注意的问题:1.如果在类中的方法都是非抽象的,这个类也可以声明为抽象的。
2.在抽象类中可以有非抽象的方法。
3.不能用抽象类直接创建对象,因为抽象类不具体,不能实例化。
抽象类:
public abstract class AbstractClass { public abstract void method1(); //抽象方法,抽象类的子类在类中必须实现 public abstract void method2(); public void method3(){//非抽象的方法 System.out.println("------------------------"); } }
二 接口
接口是对象之间进行沟通的桥梁。它能为其他对象提供调用的规范,但是不公开实现。
接口是一种特殊的抽象类,接口中的所有的方法都是抽象的,不能有具体的实现,而是由另一个类来实现(implements)接口,重写其中的方法。
例如:对手机来说,只需要用他的比如听歌,照相等功能,而不用知道这些功能是如何实现的,就可以将这些功能设置为接口。
照相的接口:
public interface ITakePhoto { public void takePhoto(); }
听歌的接口
public interface IMusic { public void music(); }
手机类
//手机类,实现了照相和听歌的功能 public class Phone implements ITakePhoto,IMusic{ //重写接口的方法 @Override public void music() { // TODO Auto-generated method stub System.out.println("---I can listen music---"); } @Override public void takePhoto() { // TODO Auto-generated method stub System.out.println("---I can takephoto---"); } }
测试类:
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Phone phone = new Phone(); phone.takePhoto(); phone.music(); } }
这样就给手机添加了功能。
implements和extends的区别:前者是实现接口,可以在一个类中实现多个接口,而且必须重写接口中的所有的方法。后者是继承类,一个子类只能继承一个父类,不能多继承,而且必须满足is a的关系,子类不用完全重写父类中的方法
相关文章推荐
- IDEA 安装与设置
- 字符集乱码决绝大全
- iscc2016-basic-find-to-me
- Easy-题目25:101. Symmetric Tree
- zsh的自动完成辅助工具:oh-my-zsh
- 天注定--从现在开始的展望
- SNMP++ 04-SNMP中OBJECT IDENTIFIER的BER编码与解码及一些思考
- Easy-题目24:110. Balanced Binary Tree
- 基因数据处理42之mango问题_seqdict.avro不存在解决
- Intent中的四个重要属性——Action、Data、Category、Extras
- 第二阶段团队项目冲刺站立会议(七)
- 51nod算法马拉松14
- Easy-题目23:21. Merge Two Sorted Lists
- 剑指offer-java(4)
- [JavaScript] 10.JS 表单操作
- 宏、函数、宏函数,内联函数的区别
- Easy-题目22:231. Power of Two
- leetcode 11
- 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现高斯分布参数推断
- 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现高斯分布参数推断