2015年11月5日18:54:24
面向对象编程中重点总结
作者:数据分析玩家
1.简述面向对象中继承与多态的定义
继承:一个新类从已有的类那里获得其已有的属性与方法,这种现象叫做继承
多态:一个父类的引用既可以保存父类对象的地址,也可以保存子类对象的地址,即一个父类的引用它既可以指向父类对象也可以指向子类对象,它可以根据当前时刻指向的不同,自动调用不同对象的方法,这就是多态
2.简述面向对象中继承与多态的好处
继承的好处:代码得到了极大的重用,减轻了程序员的工作量;利用继承可以较好的模拟出现实世界事物之间的联系,形成了一种类的层次体系结构;继承为多态的实现创造了条件
多态的好处:利用多态可以实现同一段代码做不同的事情,利用多态可以编写出一个函数将整个类族的f()方法都进行输出
3.简述面向对象中继承与多态的实质
继承的实质:面向对象中的继承反映的是现实世界中一般到特殊的关系,即抽象到具体的关系
多态的实质:java中的多态本质上就是C语言中指针的一些应用
4.简述同包继承权限的问题
父类的私有成员无法被子类继承,其余的成员都可以被子类继承,即私有成员无法被子类继承
5.如何理解A类继承了B类
1>若A类继承了B类,则各种修饰符相应的也被继承了过来
2>若A类继承了B类,则继承过来的成员相应的也就属于A类本身了
6.为什么项目中继承要慎重
若B类继承了A类,则B类会遗传A类的所有属性,包括数据属性和函数属性,也就是说,在继承当中,父类的私有成员在物理上已经被子类继承了过来,只不过在逻辑上程序员无法去访问它,因此继承必须要慎重,否则会浪费内存空间。
7.简述java中类与类之间的三种关系
1>一般到特殊的关系,即抽象到具体的关系,如继承
[继承的原则:看看B是一个A吗?如果是,则B可以当做A的一个子类]
2>包含关系 如:汽车与汽车轮子
3>使用关系 如:汽车司机与汽车
8.简述java中类继承的缺点
Java中的类只支持单继承,不支持多继承,java中的接口IO在一定程度弥补了类只能单继承带来的缺陷
9.简述包的一些概念
不同功能的类放在不同的包里面,便于组织与管理;如果一个类专门用于数据的传输,将这个类放在IO包里面
10.简述继承中super语句产生的原因与super语句的好处
Super语句产生的原因:子类可以继承父类除私有成员以外的所有成员,但是子类永远无法继承父类的构造方法,在子类的构造方法中通过使用super语句来调用父类的构造方法
Super语句的好处:使代码更加精炼,减轻了程序员的工作量,在子类的构造方法中:this.i = i;
this.j = j;
等价于:super(i,j);
11.简述super语句的三个注意事项
1>每个子类构造方法中的第一条语句,都是隐含的调用super()语句
2>如果显示的写出super语句,则必须保证该语句是子类构造方法中的第一条语句,并保证父类中有相应参数的构造方法,否则会出错
3>对super语句的调用只能放在子类的构造方法中,不能放在普通方法中,并且该语句只能放在子类构造方法中的第一条语句
12.简述方法重写的目的
如果子类对继承自父类的方法不满意,则可以重写父类的方法,在获取个人信息的时候可以使用到方法的重写;只有继承的时候才存在方法的重写,两个类之间若没有关系则不存在方法的重写
需要注意的是,一旦重新定义了自己的属性且与父类重名,那么调用新增的属性时,就以自己为准了。
需要注意的是,尽管重写了,但是子类仍可以调动父类对应的方法(可以理解为,并没与真正的覆盖掉父类的方法)
13.简述方法重写的定义与要求
定义:方法重写指在子类中重新定义父类中已有的方法,但是方法重写仅仅是函数修饰符与函数执行体的改变而已
要求:重写方法与被重写方法要求:同名,同参,同返回值,访问权限不能更加严格(因为多态);仅仅是函数修饰符与函数执行体的改变而已
[若两个函数只有函数返回值不同,则编译时会出错]
14.简述多态中为什么可以aa = bb,但是不可以bb = aa?
[其中aa为父类的引用,bb为子类的引用]
因为狗可以当做动物来看待,但是动物不能当做狗来看待,因为子类是父类的一种,但是父类不能是子类的一种
15.简述多态的3个注意事项
1>通过父类的引用只能访问子类对象从父类继承过来的成员,但是不能访问子类对象所特有的成员
2>父类的引用永远不可能直接赋给子类引用,否则会出错,只有在父类的引用本身指向的就是子类对象的时候,才可以将父类引用强制转化为子类的引用(其它情况下不允许将父类的引用强制转化为子类的引用,否则运行的时候会出错)
3>之所以要将父类的引用强制转换为子类的引用,主要是因为事件模型