1.面向对象的主要特征是什么?
抽象 继承 封装 多态
2.封装是如何实现的?
封装是通过访问控制符实现的
3.对象之间如何相互作用?作用的条件是什么?
对象之间通过发消息相互作用
作用条件:
1.引用必须真实引用了真实的对象
2.被访问对象必须定义了相应的属性和方法
3.被访问的属性或方法必须具有访问权限
4.protected修饰符有何特点?
包访问权限,继承访问权限。(子类在继承父类的时候,首先应该满足父类可被访问,例如当子类和父类不在同一个包当中时,父类修饰符必为public;在父类能被访问的前提下,凡是修饰符为public或是protected的父类属性成员或是方法能被子类所访问;private的属性成员或是方法则不能被访问。)
5.Object都有哪些方法?
6.重载的方法之间一般都有什么关系?
方法名称相同,参数类型或个数不同(若方法名称相同,参数相同,返回类型不同,则编译不能通过)
7.子类覆盖父类方法需要什么条件?子类中定义与父类同名的方法一定是覆盖吗?
条件:方法名称相同,参数相同,返回类型相同
不一定是覆盖,还可能是重载。
8.封装、继承和多态在面向对象程序设计中的用途是什么?
将我们设计的程序进行包装,变成一个黑箱,只留几个接口供使用者用。而内部的怎么运行全部信息隐藏,这是封装。
继承和多态则是我们在设计过程中可以使用的很好的工具,有了他们我们不需要写很多重复的代码,仅仅简单便可直接用之前写过的代码。
而这个过程我们是不想让别人知道,别人也不需要知道的。
好比我们是房子的设计师,我们来设计房子的图纸,图纸相同的地方我们可以直接框起来选择并且复制,需要改动的地方用橡皮擦擦掉后做修改。
设计图纸画完之后这样的房子可以建在很多地方,这便是“类的实体化”,然后我们需要保护自己的知识产权,所以会进行封装,弄上水印之类的。
9.设计Src和Dis两个类, Src中有一个被封装的属性,类型为int(要求为非负值),每当我们通过特定方法更改Src对象中的这个属性后,Dis对象都能得到通知,并向Src发消息获得此属性值。
1 classSrc{2 private int num = 0;3 Dis d;4 publicSrc() {}5 public Src(inti) {6 if(i >= 0) {7 num =i;8 }9 }10 public voidSetDis(Dis di) {11 if(di!=null) {12 d=di;13 }14 }15 public void ChangeNum(inti) {16 if(i >= 0) {17 num =i;18 d.Message();19 }20 }21 public intGetNum() {22 returnnum;23 }24 }25
26 classDis{27 Src s;28 publicDis() {}29 publicDis(Src sr) {30 //建立联系
31 s=sr;32 s.SetDis(this);33 }34 public voidMessage() {35 System.out.println("the num is changed:"+s.GetNum());36 }37 }38
39 public classSrc_Dis {40
41 public static voidmain(String[] args) {42 Src sr = new Src(1);43 Dis di = newDis(sr);44 for(int i=0;i<10;i++) {45 sr.ChangeNum(i);46 }47 }48 }
Src_Dis