Java面向对象学习笔记 -- 5(抽象类、接口)
2015-05-26 15:12
597 查看
1. 抽象类
抽象就是将拥有共同方法和属性的对象提取出来,提取后,重新设计一个更加通用、更加大众化的类,就叫抽象类。
1)抽象方法:由abstract修饰,只有方法的定义,没有方法的实现;
2)包含抽象方法的类必须是抽象类;
3)抽象类:由abstract修饰,不能被实例化,可以包含抽象方法和非抽象方法;
4)抽象类都是需要被继承的,子类继承后再实现以下操作:
4.1)子类中重写父类的抽象方法
4.2)子类也声明为抽象类
5)抽象类的意义:
5.1)封装子类共有的变量和方法--代码的重用
5.2)为子类提供一种公共的类型--向上造型
5.3)定义抽象方法,子类重写它,为子类提供一个公共的入口
2. 接口
1)制定一个标准、规范
2)只要遵守了标准,就能做某件事
3)由interface定义
接口中只能包含常量和抽象方法--数据默认为常量(public static final),
方法默认为抽象的(public abstract)
4)接口不能被实例化
5)接口需要被实现的,子类实现接口, 必须重写接口中的所有抽象方法
6)一个类可以实现多个接口, 又继承类,又实现接口时,需先继承再实现
7)接口之间可以继承(extends)
3. 抽象类和接口的区别
① 从语法角度:abstract class方法中可以有自己的数据成员,也可以有非abstract的成员方法,并赋予方法的默认行为,而在interface方式中一般不定义成员数据变量,所有的方法都是abstract,方法不能拥有默认的行为。
② 从编程的角度:abstract class在java语言中表示的是一种继承关系,一个类只能使用一次继承关系。而一个类可以实现多个interface。
③ 从问题域角度:abstract class在Java语言中体现了一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is a"关系,即父类和派生类在概念本质上应该是相同的。对于interface 来说则不然,并不要求interface的实现者和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已。
详细区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4.抽象类中的抽象方法的访问类型可以是public,protected,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5.抽象类中可以包含静态方法,接口中不能包含静态方法
6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
本文出自 “永远年轻” 博客,请务必保留此出处http://kingkongzhao.blog.51cto.com/6319491/1655272
抽象就是将拥有共同方法和属性的对象提取出来,提取后,重新设计一个更加通用、更加大众化的类,就叫抽象类。
1)抽象方法:由abstract修饰,只有方法的定义,没有方法的实现;
2)包含抽象方法的类必须是抽象类;
3)抽象类:由abstract修饰,不能被实例化,可以包含抽象方法和非抽象方法;
4)抽象类都是需要被继承的,子类继承后再实现以下操作:
4.1)子类中重写父类的抽象方法
4.2)子类也声明为抽象类
5)抽象类的意义:
5.1)封装子类共有的变量和方法--代码的重用
5.2)为子类提供一种公共的类型--向上造型
5.3)定义抽象方法,子类重写它,为子类提供一个公共的入口
2. 接口
1)制定一个标准、规范
2)只要遵守了标准,就能做某件事
3)由interface定义
接口中只能包含常量和抽象方法--数据默认为常量(public static final),
方法默认为抽象的(public abstract)
4)接口不能被实例化
5)接口需要被实现的,子类实现接口, 必须重写接口中的所有抽象方法
6)一个类可以实现多个接口, 又继承类,又实现接口时,需先继承再实现
7)接口之间可以继承(extends)
3. 抽象类和接口的区别
① 从语法角度:abstract class方法中可以有自己的数据成员,也可以有非abstract的成员方法,并赋予方法的默认行为,而在interface方式中一般不定义成员数据变量,所有的方法都是abstract,方法不能拥有默认的行为。
② 从编程的角度:abstract class在java语言中表示的是一种继承关系,一个类只能使用一次继承关系。而一个类可以实现多个interface。
③ 从问题域角度:abstract class在Java语言中体现了一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is a"关系,即父类和派生类在概念本质上应该是相同的。对于interface 来说则不然,并不要求interface的实现者和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已。
详细区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4.抽象类中的抽象方法的访问类型可以是public,protected,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5.抽象类中可以包含静态方法,接口中不能包含静态方法
6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
本文出自 “永远年轻” 博客,请务必保留此出处http://kingkongzhao.blog.51cto.com/6319491/1655272
相关文章推荐
- 设计模式学习笔记二:面向对象基础四之抽象类和接口
- PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
- PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
- JAVA基础学习(七)---面向对象三---继承,接口与 抽象类
- OOP面向对象学习笔记(3)---接口与抽象类
- Java基础学习中,关于面向对象中多态、抽象类、接口的总结
- 黑马程序员——Java面向对象之抽象类 接口 内部类笔记
- 3.java面向对象语法学习(部分2-抽象类,接口,内部类)
- 【学习笔记09】java面向对象-final、抽象类
- 【学习笔记10】java面向对象-接口
- 【学习笔记11】java面向对象-接口与类、接口与接口之间的关系
- Java学习笔记9(面向对象二:this、继承、抽象类)
- Java学习笔记10(面向对象三:接口)
- Java基础学习笔记09——(final关键字,多态,抽象类,接口)
- java面向对象学习笔记1
- Java基础(一):Java面向对象、面向对象封装、抽象类、接口、static、final
- java学习笔记之抽象类和接口
- java面向对象基础(四):抽象类和接口
- Java学习笔记8(面向对象一:概念、private)
- Java学习笔记11(面向对象四:多态)