java期末考试复习
绑定指的这样一种动作:对于某一特定的调用选择执行那个方法。编译时完成的绑定为静态绑定。动态绑定是编译时不能完成,在执行时绑定。当包含强制类型转换和继承是,绑定就不能完全在编译时完成,因为调用方法时执行的实际代码体可能依赖于实际对象的类,而这样的类在编译时可能还是未知的,因此,当综合了类型强制转换,继承和方法覆盖时,就会出现动态绑定. 接口存在的意义和价值:一个类只能直接继承一个父类,但可以同时实现若干个接口。利用接口可以获得多个特殊父类的属性,可以实现多重继承
实现接口时有哪些注意事项:在类的声明部分用implement关键字声明该类将要实现的接口;如果实现某接口的类不是abstract抽象类,则必须为所有抽象方法定义方法体;若实现某接口的类是abstract抽象类,则他可以不实现所有的方法,但其非抽象子类则必须实现所有的抽象方法;一个类在实现某接口的抽象方法时,必须使用完全相同的方法名;接口抽象方法访问限制符都已制定为public,所以类在实现方法时必须使用public修饰符。
接口回调:回调是一种双向调用模式,服务方在被调用时也会调用客户方。
举例:客户方需要将数据对象排序,通过接口调用服务方排序器,调用时必须传递两个重要的参数给服务方接口:需要排序的数据对象和比较器。服务方的排序器根据比较器的输出结果对数据对象进行排序,并将排序后的数据对象返回给客户方,由于服务方排序器需要调用客户方的比较器进行数据对象的比较,形成了回调。
线程周期变化:通过new命令创建一个Thread类或其子类的线程对象时,该线程对象处于新建状态。处于新建状态的线程可通过调用Start方法启动该线程,启动后的线程进入就绪队列排序等待,即处于就绪状态。当处于就绪状态的线程被调度并获得CPU资源时便进入运行状态。当发生等待输入/输出操作完成,线程调用wait()方法等待一个条件变量,调用了该线程的sleep()休眠方法,调用了suspend()挂起方法,这些情况
时,线程就进入阻塞状态。当调用run()方
法结束后,线程就进入消亡状态,这是线程的正常消亡。
线程如何产生:java的线程可通过两种方式产生线程,1.通过继承Thread类构造线程,Java定义了一个直接从根类Object中派生Thread类。所有从这个类派生的直接子类和间接子类均为线程。2.实现一个Runnable接口。
同步访问机制:是为了避免多个线程同时访问一个共享对象,用synchronized关键字实现同步访问,在某个时刻只允许一个线程独占性的访问该共享对象,其他线程只能处于阻塞状态,只有该线程访问操作结束后才允许其他线程访问,这称为相互排斥或线程同步。(即访问临界区问题)
类修饰符:访问控制符:public
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示该类被任何类访问称为公共类,friendly(默认类)表示该类只能被同一个包中的类所访问。类型说明符:final(最终类)表示该类不能派生子类,abstract(抽象类)不能定义对象,通常被设计成具有类似成员变量和方法的子类的父类。两种修饰符若在一起使用,则访问控制符在前,类型说明符在后。
成员变量修饰符:访问控制符:public公共访问控制符,private私有访问控制符,只能被该类访问,其他都不行;protected保护访问控制符,可被该类自身,同一个包中的其他类和其他包中的子类访问。非访问控制符:static静态域修饰符,仅属于类的变量不属于任何一个具体对象;final最终域修饰符,用来声明一个常量,transient暂时性域修饰符,用来声明一个暂时性变量;volatile易失(共享)域修饰符,用于声明一个共享变量。
方法修饰符:可访问控制符:public公共访问控制符,private私有访问控制符,protected保护访问控制符。非访问控制符:abstract抽象方法控制符,抽象方法只有方法头没有方法体和操作实现;static静态方法控制符,静态方法属于整个类,不处理成员变量;final最终方法控制符,最终方法的功能和内部语句不能更改,即不能重载;native本地方法控制符;synchronized同步
方法控制符
OOP面向对象编程的特点:封装性,继承性,通信相关性.
方法覆盖:是指子类重新定义从父类继承来的方法,实现自身的行为,而不是实现由父类定义的行为.应注意的问题:保持与父类完全相同的方法头部声明. 域的继承:子类可以继承父类所有非私有域 域的隐藏:在子类中重新定义一个与从父类继承来的域变量完全相同的变量,称为域的隐藏。
方法覆盖与域的隐藏不同之处:子类隐藏父类的域只是使之不可见,父类的同名域在子类对象中仍然占有自己独立的内存空间;而子类方法对父类同名方法的覆盖将清除父类方法占用的内存空间,从而使父类方法在子类对象中不复存在.
实现多态:覆盖实现多态(子类重写父类),重载实现多态(同类中不同方法).
数组的创建:声明数组:数组元素类型 [] 数组名;创建数组空间:数组名=new 数组元素类型[数组长度];初始化数组;数组的特点:数组中所有元素应该是同一种类型,数组元素是有顺序的,数组中的一个元素通过数组名和数组下标来确定.
标示符命名规则:标识符必须以大小写字母、数字、_和$组成,但不可以用数字开头。Java语言严格区分大小写.
包的命名方式:建议反转Internet域名为包名。包的建立:通过package语句建立;包的使用:装载整个包;装载一个类或者接口;直接使用包名作为类名的前缀
Object与其他类型的转换需遵循的原则:子类对象可以被视为其父类的一个对象;父类对象不能被当作是其某一个子类的对象;如果一个方法的形式参数定义的是父类对象,在方法调用时,可以使用子类对象作为实际参数;如果父类对
象引用指向的实际是一个子类对象,那么这个父类对象的引用可以用强制类型转换转化成子类对象的引用。 开方Math.sqrt()