黑马程序员技术交流社区

标题: 面向对象之——抽象类和接口 [打印本页]

作者: 黄冬    时间: 2015-5-13 23:30
标题: 面向对象之——抽象类和接口
抽象类
抽象方法:只有方法声明,没有方法体的方法
抽象类:含有抽象方法的类是抽象类,先有抽象方法,再有抽象类。
抽象类特点:
1、抽象方法和抽象类都要用关键字abstract标示,方法中也不能省略
2、有抽象方法的类一定是抽象类(或接口),
抽象类中不一定有抽象方法,
3、抽象类本身不能被实例化,即不能创建对象,但是也会有构造方法
4、如果一个类继承了抽象类,(是或者的关系,有一个满足了就行)
a) 要么这个类本身也是抽象的
b) 要么就得重写父类的所有抽象方法
抽象类的作用:强制要求子类必须完成某些功能,即抽象类的特点4
抽象类的实例化:抽象类本身不能实体化,但是抽象类可以通过子类对象进行实例化,即多态的应用。          一般使用多态的地方就是抽象类多态,或者接口多态。
抽象类的成员特点:
1、成员变量        可以有成员变量,也可以有成员常量
2、构造方法        有构造方法,但是不能被实例化
3、成员方法        抽象类中的可以有多个方法,可以有抽象的,也可以有非抽象的。
抽象方法是为了强制要求子类完成某些功能。
非抽象方法是为了提高代码的复用性,被子类继承。
接口
接口的概念:一种特殊的抽象类,比抽象类更抽象,因为它里面的方法都要是抽象的,用interface定义接口。 (抽象类中可以有抽象方法,也可以没有,还可以有非抽象的方法;接口中也可以没有方法,不过没有意义)
接口的实现:也要有具体的类来实现,用类实现接口中的内容,用关键字implements
接口的多态:和类的多态、抽象类的多态定义格式相似,父类名改为接口名即可。
接口的基本特点:
1、接口不能被实例化,
2、接口被子类实现后,要么子类重写接口中的所有方法,要么子类也是抽象类(和抽象类相同)  
接口的成员特点:
成员变量:
接口中只有常量,因为接口的成员变量有默认修饰符:Public static final
构造方法:
接口是没有构造方法的(接口不需要通过构造对字段初始化的,因为都是常量)
任何类,如果没有继承父类,那么这个类就继承字object类
成员方法:
接口中的成员方法必须都是抽象的,
因为接口中的成员方法有默认修饰符,public abstract
接口的方法默认都是抽象的,即方法中可以省略abstract,而且默认为public修饰,但是抽象类中不能省略abstract。
类与类之间的关系:
就是继承关系,而且只能单继承和多重继承
所有的类,都直接或间接的继承自object类,object类是所有类的超类
类与接口的关系:
类与接口是实现关系,可以单实现,还可以是多实现
而且,在子类在继承父类的同时,还可以去实现另外的接口。
接口与接口的关系:
接口和接口是继承关系,可以单继承,也可以多继承
类不能多继承是因为担心子类调用不明确,但是接口中的方法都是抽象的,没有具体的方法内容,所以就没有这个担心了。
接口和抽象类设计理念的区别:
        抽象类被继承,这个类中定义的是整个继承体现的共性内容。        体现:is a
        接口被实现,这个接口中定义的是整个体现的扩展内容。        体现:like a
接口的思想特点:
接口是对外暴漏的规则、接口是程序的功能扩展
接口的出现降低耦合性、接口可以用来多实现
为什么所有类的构造方法都默认调用父类的无参构造?
因为所有的类没有继承的时候就默认继承object类,而这个类只有无参构造。
abstract不能和哪些关键字共存。
                        final
                        private
                        static

作者: 杨海林    时间: 2015-5-13 23:33
....................................................
作者: 王连涛    时间: 2015-5-13 23:59
刚刚学完这块,感觉学的还行,但是做题的时候还是会发现有很多不足的地方,比如得明确的记住子类不管有参无参必须得调用父类的构造方法,不管直接还是间接
作者: 熊猫宝宝    时间: 2015-5-14 00:07
不错,收下了。。非常感谢
作者: lingdu    时间: 2015-5-14 00:26
已阅。。。。。。
作者: 喻忠航    时间: 2015-5-14 01:13
很不错,学习了
作者: 鱼饵    时间: 2015-5-14 08:18
要记住的东西有好多啊。
作者: 枕寒流    时间: 2015-5-14 08:30
蹭个黑马币
作者: tream    时间: 2015-5-14 08:36
总结的不错,学习了
作者: _hy    时间: 2015-5-14 09:09
学习了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2