当前位置 : 主页 > 手机开发 > 其它 >

抽象类和接口等理解

来源:互联网 收集:自由互联 发布时间:2021-06-19
简单介绍一下抽象类和接口? 1.抽象类中的抽象方法前面有默认的abstract修饰,不能用其他修饰符去修饰,原因是:抽象方法中没有方法体,是用来被继承的,所以private修饰符没有作用

简单介绍一下抽象类和接口?    1.抽象类中的抽象方法前面有默认的abstract修饰,不能用其他修饰符去修饰,原因是:抽象方法中没有方法体,是用来被继承的,所以private修饰符没有作用,static修饰符可以直接使用类名来调用访问该方法,抽象方法用static修饰就没有意义,因为可以直接用类名来调用了;synchronized是为该方法添加一个锁,如果该关键字修饰的是一个static方法,则使用的锁就是class变量的锁,如果修饰的是类方法,则使用this变量锁,但是抽象类不能实例化对象,因为该方法不是在该抽象类中实现的,锁应该归其子类所有,所以抽象类方法不能用synchronized修饰符修饰。(为啥不能用native修饰抽象方法???):因为native修饰符和abstract修饰符本身就存在一种冲突,他们都是方法的声明,只不过native是把方法实现交给了本地系统,abstract是把方法的实现交给了子类,如果同时存在,那么就不确定到底是交给了本地还是子类,到底是谁来实现这个方法。    2.接口是一个特殊的抽象类,接口中的方法全部是抽象方法abstract,但其前面的abstract可以省略,所以抽象类中的抽象方法不可以用的修饰符这里也不可以用,(还存在一个protected修饰符???)因为定义接口就是为了让所有需要的类去实现,不只是其子类,但是要用public去修饰,接口可以去继承一个已有的接口。抽象类中抽象方法和接口的使用:    1.相同点:都不能被实例化,都包含抽象方法    2.不同点:(1):接口只能包含抽象方法,抽象类可以包含普通方法        (2):接口中不能定义静态方法,抽象类可以        (3):接口中不能定义普通属性,只能定义静态常量属性,抽象类可以        (4):接口中不包含构造器,抽象类可以(不是用于创建对象而是让子类完成初始化)        (5):接口可以多继承,抽象类只能单继承(只能有一个直接父类)总结:接口中的所有方法全是抽象方法只能是public abstract修饰,属性默认public static final修饰,抽象类除了包含抽象方法外和普通方法无区别。对象的序列化(为什么要使用序列化):    Java平台允许我们我们在内存中创建可复用的java对象,但一般情况下,只有当jvm运行的状态下,这些对象才可能存在,即这些对象的生命周期不会比JVM的生命周期更长,但是在我们应用中,常常需要在JVM停止运行后保存(持久化)这些对象的信息,并在将来能够重新读取被保存的对象,Java的序列化就能帮我们实现这些需求。    使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在使用的时候再将这些字节组成对象,对象序列化保存的是对象的‘状态’,即他的成员变量,不会关注类中的静态变量。transient是变量的修饰符,序列化时会忽略此字段,只有实现了serializable接口的才可以被序列化。对象的传输:objectinputstream和objectoutputstreamforward和redirect的分析:    1.从地址的显示来了说:        forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容从哪里来,所以地址栏还是原来的地址栏。        redirect是服务端根据逻辑发送一个状态码,告诉浏览器去请求那个地址,所以地址更新。    2.从数据共享来说:        forward转发页面和装发到的页面可以共享request中的数据        redirect不能共享数据    3.从应用的地方来说:        forward一般用于用户登陆的时候,根据角色转发到相应的模块        redirect一般用于用户注销登陆时返回主界面和跳转到其他界面    4.效率上来说:        forward高    redirect低

网友评论