Java面向对象程序设计第5章1-9
1.面向对象的主要特征是什么?三大特征是:封装、继承和多态。 2.封装是如何实现的?封装是将对象的信息隐藏在对象内部,禁止外部程序直接访问对象内部的属性和方法。
3.对象之间如何相互作用?作用的条件是什么?通过封装与组合来设计,具有“高内聚,低耦合”的特点。比如A类里有B类的引用,则A的实例对象就可以看成B的实例对象组合而成。 4.protected修饰符有何特点?protected这个修饰符,各大参考书都会这样说:访问权限为类内,包内和子类,因此在父类中定义的方法和成员变量如果为protected修饰的,同包中任意访问,只有父类声明为public时不同包的子类也可以访问。 5.Object都有哪些方法?1.Object clone()将当前对象克隆,保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。 主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要在类中复写clone方法。 2.Class getClass()获得当前的类对象 3.String toString()得到代表这个对象的字符串,一般子类都有覆盖。 4.void finalize()对象被释放时使用,因为无法确定该方法什么时候被调用,很少使用。 5.Boolean equals()判断两个引用是否指向同一个对象,其参数不能为普通数据类型 6.int hashCode()得到代表对象的一个整数,这个整数在应用程序运行时保持不变 7.void wait()应用于线程同步中的线程等待 wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。
8.notify用于线程同步中唤醒等待的线程 9.notifyAll用于线程同步中唤醒等待的所有线程 6.重载的方法之间一般有什么关系?方法名称相同,参数类型或个数不同,可以看成重载的方法是一个方法的两种实现,仅有返回类型不同,则编译不能通过 7.子类覆盖父类方法需要什么条件?子类中定义与父类同名的方法一定是覆盖吗?条件:
不一定:子类和父类的方法必须是实例方法,如果父类是static方法而子类不是实例方法,或者相反都会报错。 8.封装、继承与多态在面向对象程序设计中的用途是什么?封装使得内部实现对用户隐藏,有利于安全操作,继承可以实现对象之间的共性与特性,多态性更贴近人的使用习惯,使程序更方便。 9.设计Src和Dis两个类,Src中有一个被封装的属性,类型为int(要求为非负值),每当通过特定方法更改Src对象中的这个属性后,Dis对象都能得到通知,并向Src发消息获得此属性值。class Dis { int val; public Dis(int con_val){ val = con_val; } public void monitor() { System.out.println("the value of Src has changed"); } } class Src{ Dis dis;//组合dis int value; public Src(Dis con_dis) { value = con_dis.val >= 0 ? con_dis.val : 0;//保证value非负 this.dis=con_dis;//Src对象中拥有了Dis对象的引用 } public void valueChange() { for (int i = 0; i < 2; i++) { int oldvalue = value; value += i; if (oldvalue != value){ dis.monitor();//只改变了一次 } } } } public class test { public static void main(String[] args) { Dis dis=new Dis(666); Src src=new Src(dis);//创建src对象,并将src对象作为参数传入 src.valueChange();//the value of Src has changed } } 结尾:以后有补充再来改~~~ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |