java学习日记20200511

java面试题——基础部分

java语言的三大特性:封装、继承、多态

 封装:将数据和基于数据的操作封装在一起,使其构成一个不可分割的整体,尽可能的隐藏实现的细节,仅保留一些对外接口使之与外部联系。

封装的好处:实现了专业的分工。在开发时,各程序员可以先编写各自功能的代码,然后在需要时,通过接口调用,从而实现了专业的分工。代码的复用。封装的功能,对外提供接口供不同的程序调用,其实也相当于相同的功能代码不需要多次编写,在某种意义上也算实现了代码的复用。

继承:对于继承的理解,看到一个比较好的说法是继承是个性对共性的属性和方法的接受,同时加入个性特有的属性和方法。如class cat extends animal,可以理解为猫属于动物,猫具有动物的公共属性和方法,比如eat、run等,同时cat也有自己特有的属性和方法,如猫喜欢吃鱼。其实离开编程层面,从生活常识中去理解也很简单,猫属于动物,猫有动物公共的属性,猫也有其他动物没有属性,这些其他动物没有的属性也就是猫特有的属性,java中的继承也是一样的。java是一门面向对象的语言,java中的概念很多都源于生活,比较好理解。

继承的好处:继承最大的好处就是实现代码的复用,是程序有良好的拓展性。

继承的结果:子类继承父类,就拥有了父类的属性和方法,但需要注意的是父类的私有属性和方法以及构造器将不会被继承。子类可以在继承的基础上写自己特有的属性和方法,也可以复写父类的方法,复写的方法将覆盖父类的方法即方法的重写。这里提到方法的重写,就联想到java中方法的重载。方法的重写和方法的重载之前的区别。方法的重写是在子类继承父类的时候,子类中编写的方法和父类中的方法同名,同时参数类型和个数也必须相同,访问修饰符要大于或等于父类的方法,因为子类是对父类的拓展。返回值如果是基本数据类型或者void,那就必须和父类相同,如果是引用数据类型,则返回值的范围必须小于或等于父类的方法。方法的重载,一般体现为构造器的有参无参,主要区别在于方法中的参数类型和个数不同,方法名相同。

多态:多态的概念是在封装和继承的基础上发展而来的。多态简单的理解就是对于同一个接口,不同的事物去调用,可以拥有不同的实现。多态在理解上也可以认为是继承,只不过继承的概念更侧重于代码的复用,而多态的概念则侧重于子类于父类之间的方法和属性,子类可以使用父类的原始方法,也可以重写父类的方法或者拥有自己特有的方法,这就是多态的展现形式。

多态的好处:多态可以是程序具有良好的拓展性,同时前面提到子类可以写自己的特有的方法也可以使用父类公共的方法,这也就说明程序可以利用多态对所有类的对象进行通用处理。

 

java语言的主要特性

java语言是易学的。

java语言是强制面向对象的。java语言提供了类、接口和继承等原语,为了简单起见,java只支持类之间的单继承,支持接口之间的多继承和类与接口之间的实现(关键字为implements)。

java语言是分布式的。所谓的分布式就是将原先部署在一台计算机系统的项目,拆分成多个功能模块,将各个功能模块部署到不同的计算机系统上,位于不同计算机系统上的各个功能模块之间的通信通过远程过程调用的方式(RPC remote Procedure Call)实现信息交互。而java语言是支持Internet应用的开发的,在基本的java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库。java的远程方法**(RMI Remote Method Invocation)机制也是开发分布式应用的重要手段。

这里提到RPC,简单的理解就是一个节点请求另一个节点提供的服务。节点之间的通信需要用到开放式系统互联(OSI Open System Interconnect)模型中的网络传输层。RPC可以使用http或者tcp,http协议属于应用层,数据传输中的序列化和反序列化的操作是在服务调用的传输过程中进行的,整个通信的代价比较高,也就是执行效率不太好。tcp协议属于传输层,数据的序列化和反序列化操作在客户端和服务端进行,通信的效率更高。

java学习日记20200511

图片源自:https://www.jianshu.com/p/7d6853140e13

OSI模型的7层结构:

          应用层——访问网络服务的端口

          表示层——提供数据格式转换服务

          会话层——建立端连接并提供访问验证和会话管理

          传输层——提供应用进程之间的逻辑通信

          网络层——为数据在结点之前传输创建逻辑链路并分组转发数据

          链路层——在通信的实体间建立数据链路连接

          物理层——为数据端提供原始比特流的传输的通路

java语言是健壮的。java的强类型机制、异常处理、垃圾的自动收集等是对java健壮性的重要保证

java语言是安全的。java提供了一些安全机制,如安全防范机制(ClassLoader)

java语言是平台无关的。java文件的编译和执行都是由JVM完成的,JVM是java平台自带的,任何系统中只要安装了JDK,就可以运行java文件

java语言是解释性语言。这里有一篇说明解析型语言和编译型语言的区别的博客写的挺好的,推荐一下https://blog.csdn.net/xwx_100/article/details/83212067

java学习日记20200511

java是性能略高的。与那些解释性的高级脚本语言相比,java的性能还是比较优的。

java语言是原生支持多线程的。在java语言中,线程是一种特殊的对象,它必须由Thread类或其子类来创建。

相关知识点链接:

什么是RPC  https://www.jianshu.com/p/7d6853140e13

什么是REST  https://www.cnblogs.com/loveis715/p/4669091.html

java RMI https://www.jianshu.com/p/de85fad05dcb

Socket和对象序列化 https://blog.csdn.net/m0_38024791/article/details/72432386