1、谈谈面向对象编程与面向接口编程的区别?
面向对象编程:
首先java就是面向对象编程,所谓在java中万事万物皆对象,这是因为java中所有类的调用都是new出来的,其次面向对象用到三大特性,即封装、多态、继承。面向对象=对象+消息。
面向接口编程:
可以理解为只有实现者和调用者都遵循"面向接口编程"这个准则,制定者的协调目的才能达到。
就是你在实现之前就得想好接口,也就是常说的设计比实现难!体现多态性,定义接口。
2、说说java 解析xml有哪些技术?
-
DOM
- DOM 是 W3C 处理 XML 的标准 API,它是许多其它与 XML 处理相关的标准的基础,不仅是 Java,其它诸如 Javascript,PHP,MS .NET 等等语言都实现了该标准, 成为了应用最为广泛的 XML 处理方式。 DOM 解析耗费时间。DOM基于DOM树来解析的。
-
SAX
- SAX 使用了最少的系统资源和最快速的解析方式对 XML 处理提供了支持。 但随之而来繁琐的查找方式也给广大程序员带来许多困扰,常常令人头痛不已,但同时它对 XPath 查询功能的支持,令人们对它又爱又恨。SAX 解析过于繁琐。SAX基于时间驱动来解析。
-
Digester
- 由于前面两种各有缺点,大家想到需要用与 XML 结构相对应的 JavaBean 来装载这些信息,由此 Digester 应运而生。它的出现为 XML 转换为 JavaBean 对象的需求带来了方便的操作接口,使得更多的类似需求得到了比较完美的解决方法, 不再需要程序员自己实现此类繁琐的解析程序了。
3、抽象类与接口的区别?
一、表示内容不同
- 抽象类:抽象类表示该类中可能已经有一些方法的具体定义。
- 接口:接口就仅仅只能定义各个方法的界面(方法名,参数列表,返回类型),并不关心具体细节。
二、性质不同
- 抽象类:抽象类是对象的抽象。
- 接口:接口是一种行为规范。
三、成员变量不同
- 抽象类:抽象类中的成员变量可以被不同的修饰符来修饰。
- 接口:接口中的成员变量默认的都是静态常量(static final)。
总结:
abstract class ,侧重于描述事物的本质,比如:形状,水果,美女…抽象的概念,设计为抽象类。
interface,侧重于描述事物的功能。比如:保温功能,拍照功能,上网功能…
比如:消防车,本质是车,功能是灭火。
设计一个消防车类
消防车 extends 车 implements 灭火 , 车是抽象类,灭火接口
4、谈谈表单的同步提交与异步提交的区别?
同步提交:不需要ajax,而是直接在form表单的开始标签里添加action和method属性实现。浏览器会将响应结果直接进行覆盖,之前的表单便会被覆盖,替换成服务端返回内容。
通过submit按钮提交,执行表单的action动作。
出现页面假死的现象,用户体验不好。
<body>
<div id="body”>
<form id="form" action="/users/login" method="post">
<p>用户名:<input name="userName" type="text" id="userName" value="" /></p>
<p>密 码:<input name="password" type="password" id="password" value="" /></p>
<p><input type="submit" value="确认"> <input type="reset" value="重置"></p>
</form>
</div>
</body>
异步提交:form标签内部不再编写action和method,而是通过ajax的url和method选项去实现提交。
通过ajax异步提交,通过普通按钮提交。
实现页面局部刷新,用户体验好。
<body>
<div id="forms">
<form id="form">
<p>用户名:<input name="userName" type="text" id="userName" value="" /></p>
<p>密 码:<input name="password" type="password" id="password" value="" /></p>
<p><input type="button" id="btn" value="登录"> <input type="reset" value="重置"></p>
</form>
</div>
<script type="text/javascript">
$("#btn").click(function () {
$.ajax({
type: "POST", //提交的方法
url:"/user/login", //提交的地址
data:$("#form1").serialize(), //序列化表单值输出
async: false,
error: function(request) { //失败的话
alert("提交失败 error");
},
success: function(data) { //成功
alert(data); //就将返回的数据显示出来
window.location.href="跳转页面"
}
});
});
</script>
</body>