Java面向对象程序设计第5章1-9
1.面向对象的主要特征是什么?
三大特征是:封装、继承和多态。
封装:是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性和行为,而这个公布也是可以有选择性的公布给其它对象。
继承:是子对象可以继承父对象的属性和行为,亦即父对象拥有的属性和行为,其子对象也就拥有了这些属性和行为。
多态性:是指允许不同类的对象对同一消息作出响应。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
2.封装是如何实现的?
封装是将对象的信息隐藏在对象内部,禁止外部程序直接访问对象内部的属性和方法。
java封装类通过三个步骤实现:
- 修改属性的可见性,限制访问。
- 设置属性的读取方法。
- 在读取属性的方法中,添加对属性读取的限制。
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)设定一个超时间隔,如果在规定时间内没有获得锁就返回。
调用该方法后当前线程进入睡眠状态,直到以下事件发生。
其他线程调用了该对象的notify方法。
其他线程调用了该对象的notifyAll方法。
其他线程调用了interrupt中断该线程。
时间间隔到了。
此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。
8.notify
用于线程同步中唤醒等待的线程
9.notifyAll
用于线程同步中唤醒等待的所有线程
6.重载的方法之间一般有什么关系?
方法名称相同,参数类型或个数不同,可以看成重载的方法是一个方法的两种实现,仅有返回类型不同,则编译不能通过
7.子类覆盖父类方法需要什么条件?子类中定义与父类同名的方法一定是覆盖吗?
条件:
- 子类的访问修饰符权限应等于或大于父类
- 同名的static方法和非static方法不能相互覆盖
- 方法前有final修饰符,此方法不能在子类方法中进行覆盖
- 在JDK中,很多父类的方法被子类重新覆盖,赋予了不同的含义,如Object类中的boolean equals(Object obj)方法
- 抽象类中如果存在抽象方法,则具体子类必须对抽象方法进行覆盖
不一定:
子类和父类的方法必须是实例方法,如果父类是static方法而子类不是实例方法,或者相反都会报错。
如果父类和子类都是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
}
}
结尾:
以后有补充再来改~~~
Java面向对象程序设计第5章1-9的更多相关文章
- Java面向对象程序设计第14章3-8和第15章6
Java面向对象程序设计第14章3-8和第15章6 3.完成下面方法中的代码,要求建立一个缓冲区,将字节输入流中的内容转为字符串. import java.io.*; public class tes ...
- Java面向对象程序设计第9章1-9
Java面向对象程序设计第9章1-9 1. 线程和进程的联系和区别是什么? 联系: 一个进程可以包括多个线程. 区别: 进程: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统 ...
- Java面向对象程序设计第8章3-5
Java面向对象程序设计第8章3-5 3.String类型有什么特点? 一旦赋值,便不能更改其指向的字符对象 如果更改,则会指向一个新的字符对象 不能为null 4.String什么时候进行值比较,什 ...
- Java面向对象程序设计第7章1-8
Java面向对象程序设计第7章1-8 1."程序中凡是可能出现异常的地方必须进行捕获或拋出",这句话对吗? 不对. 异常分两类,runtime异常和非runtime异常. runt ...
- Java面向对象程序设计第6章1-12
1.this和super各有几种用法? this this 用法有三种,主要应用场合: 表示当前对象引用,常用于形参或局部变量与类的成员变 量同名的情形,使用this.成员名表示当前对象的成员 表示当 ...
- Java面向对象程序设计第15章5
5. 利用URLConnetction对象编写程序返回某网站的首页,并将首页的内容存放到文件当中. import java.net.*; import java.io.*; public class ...
- 20165220实验二《Java面向对象程序设计》
实验封面: 实验二 面向对象程序设计-1 实验要求: 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 参考http://www. ...
- 2017-2018-2 20165301 实验四《Java面向对象程序设计》实验报告
2017-2018-2 20165301 实验四<Java面向对象程序设计>实验报告 一.Android Stuidio的安装测试 实验要求: 参考<Java和Android开发学习 ...
- 2017-2018-2 20165207实验二《Java面向对象程序设计》实验报告
2017-2018-2 20165207实验二<Java面向对象程序设计>实验报告 课程:Java程序设计 班级:1652 姓名:李天林 学号:20165207 实验日期:2018年4月1 ...
随机推荐
- Django-用户-组-权限
前言 RBAC(Role-Based Access Control,基于角色的访问控制)就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角 ...
- activemq的下载与安装
一.介绍 Apache ActiveMQ™是最流行的开源,多协议,基于Java的消息服务器.它支持行业标准协议,因此用户可以通过广泛的语言和平台获得客户选择的好处.可以使用C,C ++,Python, ...
- 90002CAD相关操作
第一章 初识CAD 1.1 CAD能干什么 (1)绘制机械图/建筑图/装修图等二维复杂工程图的不二之选.二维设计软件的王者. (2)CAD可以绘制平面图.轴测图(二维线框表示三维图形).立体图(三 ...
- Java多线程之线程的互斥处理
Java多线程之线程的互斥处理 一.前言 多线程程序中的各个线程都是自由运行的,所以它们有时就会同时操作同一个实例.这在某些情况下会引发问题.例如,从银行账户取款时,余额确认部分的代码应该是像下面这样 ...
- DOM操作(基础版)
DOM操作(基础版) DOM是document Object Model的缩写,简称文档对象模型.只要记住这是操作文档的就行了. DOM基础选择器 1.getElementById(id); //获取 ...
- 计算机基础+python初阶
今日内容: 1.计算机基础知识 2.python简介 3.快速入门 今日内容: 一.计算机基础 1. 计算机什么组成的 输入输出设备 cpu 硬盘 内存 中央处理器 处理各种数据 相当于人的大脑 内存 ...
- MSIL实用指南-比较运算
数值的比较就是大于.小于.等于.大于等于.小于等于.不等于,它们的运算结果都是布尔值.大于.小于.等于有直接对应的指令,分别是Cgt.Clt.Ceq.大于等于.小于等于.不等于没有直接对应的指令,它的 ...
- [UWP]占领标题栏
1. 前言 每一个有理想的UWP应用都会打标题栏的注意,尤其当微软提供 将 Acrylic 扩展到标题栏 这个功能后,大部分Windows 10的原生应用都不乖了,纷纷占领了标题栏的一亩三分地.这篇博 ...
- 特殊字符替换 > < " ' &
function toTXT(str){ var RexStr = /\<|\>|\"|\'|\&/g str = str.replace ...
- JPA多条件复杂SQL动态分页查询
概述 ORM映射为我们带来便利的同时,也失去了较大灵活性,如果SQL较复杂,要进行动态查询,那必定是一件头疼的事情(也可能是lz还没发现好的方法),记录下自己用的三种复杂查询方式. 环境 spring ...