面向对象编程与面向接口编程的区别?java 解析xml有哪些技术?抽象类与接口的区别?表单的同步提交与异步提交的区别?

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="确认">&nbsp<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="登录">&nbsp<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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值