黑马程序员--面向对象(一)

来源:互联网 发布:php 批量不重复卡密 编辑:程序博客网 时间:2024/04/30 00:53
1、接口和抽象类的区别
共性:
抽象类和接口都是不断向上抽取而来的。

区别:
1,抽象类中可以定义抽象方法也可以定义非抽象方法,非抽象方法可以直接提供给子类使用。
接口中只能定义抽象方法。
2,类与类之间是继承关系,is a关系。
  类与接口之间是实现关系。like a关系。
  抽象类一般描述的都是一个体系is a,接口是给体系进行功能扩展like a
3,类与类之间只能单继承。
  类与接口之间可以多实现。

2、多态
多态:多种形态。
多态在程序中的体现:父类或者接口的引用指向了自己的子类对象

多态的前提:
1,必须有继承或者实现的关系。
2,通常都有覆盖的操作。

多态的好处:
提高了程序的扩展性,在思想上也有不同,以前是面对一个对象调用,对象多了调用麻烦。 
相当于指挥一批对象做事情,将复杂事情简单化。

多态的弊端:
多态的出现,虽然可以让前期的程序使用后期的内容。 
不可以使用子类的特有内容。

向上转型
Animal a = new Cat();//向上转型(类型提升)。子类对象提升为了父类型。
提升的好处:就是提高了扩展性。隐藏了子类型。
提升的局限性:只能使用父类中的方法。 如果子类有覆盖的话,运行的是子类的内容。

向下转型
Cat c = (Cat)a;//向下转型(强制类型转换)。好处:可以使用具体子类型的特有方法。
向下转型需要注意:父类型向下转成子类型,因为子类型不唯一,所以,需要进行判断。
如何判断对象类型呢? 用到一个关键字完成,instanceof   对象  instanceof  类or接口
记住:一旦向下转型,必须先instanceof判断

记住:对于子父类转型动作,自始自终都是子类对象在做着类型的转换而已。

3、多态中成员的特点
1,成员变量。
多态调用时,对于成员变量,无论是编译还是运行,结果只参考引用型变量所属的类中的成员变量。
参考等号左边。

2,成员函数。
多态调用时,对于成员函数,
编译时,参考引用型变量所属的类中是否有被调用的方法。有,编译通过,没有编译失败。
运行时,参考的是对象所属的类中是否有调用的方法。
简单说:

编译看左边,运行看右边。

代码示例:

abstract class Student {public abstract  void study();public static void sleeps(){System.out.print("睡觉");}}class jichu extends Student{public void study(){System.out.print("学习基础");}public static void sleeps(){System.out.print("站着");}}class gaoji extends Student{public void study(){System.out.print("学习高级");}public static void sleeps(){System.out.print("趴着");}}class DoStudent{public void dosome(Student stu){stu.study();stu.sleeps();}}public class duotai {public static void main(String[] args) {DoStudent ds=new DoStudent();ds.dosome(new jichu());//传的是子类对象 ds.dosome(new gaoji());}}



3,静态函数。
简单说:
编译和运行都看左边。

4、API:Application Programming Interface应用程序接口
java对外提供的,对外暴露的公共的部分都称之为接口
0 0
原创粉丝点击