Java是一种基于类和面向对象的计算机编程语言。面向对象的软件开发的优点如下:
代码模块化开发,从而导致维护和修改方便。
可重用性的代码。
提高了可靠性和代码的灵活性。
增加代码的可读性。
面向对象程序设计包含了许多显著的特点,如封装,继承,多态和抽象:
封装
封装提供对象隐藏其内部特征和行为的能力。每一个对象提供了一些方法,这些方法可以由其他对象来访问和改变其内部的数据。在Java中,有三种访问修饰符:公共,私有和保护。每个修饰符规定不同的访问权限,这种访问无论是来自相同的或外部的包。
一些使用封装的优点列举如下:
每一个对象内部状态是通过隐藏属性实现保护。
它增加了代码可用性和维护性,因为对象的行为可以独立地改变或扩展。
它通过防止对象以不希望的方式彼此相互作用,提高了模块化。
多态性
多态性是编程语言中呈现相同的接口,用于实现不同的基础数据类型的能力。一个多态型是一种类型,其操作也可以应用于其他一些类型的值。
继承
继承提供了一个对象获得另一个类的字段和方法称为基类的能力。继承提供了重用性的代码,可以用来添加额外的功能到现有的类,而不需要修改它。
抽象化
抽象是分离抽象和具体的实现,开发者可以在自己的具体类中实现自己的功能。Java支持抽象类,接口暴露的创建和存在,抽象类不包括的所有方法的实际执行。抽象方法的目的是从类的行为中分离出其实现细节。
抽象和封装之间的差异
抽象和封装是相辅相成的概念。一方面,抽象专注于一个对象的行为。另一方面,封装专注于一个对象的行为的执行细节。封装通常是通过隐藏关于对象的内部状态的信息,因此,可以看作是为了提供抽象化中使用的一种实现策略。
关于Java的一般问题
1。什么是JVM?为什么Java是"平台无关的编程语言"?
Java虚拟机(JVM)是一个过程的虚拟机,可以执行Java字节码。每个Java源文件编译成字节码文件,它是由JVM执行。
Java不必由程序员为每个单独的平台进行重写或重新编译。Java虚拟机,使这一切成为可能,因为它知道特定的指令长度和底层硬件平台的其他特殊情况。
2。什么是JDK和JRE的区别?
Java运行时环境(JRE)是基本的Java虚拟机(JVM),包括Java执行程序。它还包括浏览器插件小程序执行。Java开发工具包(JDK)是Java全功能软件开发工具包,包括JRE,编译器和工具(如JavaDoc ,和Java Debugger )。
3。"静态"的关键字是什么意思?你可以在Java重写私有或静态方法?
static关键字表示该成员变量或方法可以被访问,而无需到它所属的类的实例化。
用户不能覆盖静态方法 ,因为方法重载是基于在运行时动态绑定,而静态方法是在编译时绑定。静态方法不与任何类的实例相关联,这个概念并不适用。
4。您可以在静态上下文中访问非静态变量?
在Java中静态变量是属于它的类,它的所有实例值保持不变。当类被JVM加载时,静态变量被初始化。如果你的代码试图不在任何实例中访问非静态变量,编译器会报错,因为这些变量尚未创建,他们不与任何实例相关联。
5。什么是Java支持的数据类型?什么是自动装箱Autoboxing和拆箱Unboxing?
通过Java编程语言支持的八个基本数据类型有:
byte
short
int
long
float
double
boolean
char
Autoboxing是Java编译器提出在基本类型和它们对应的对象包装类之间实现自动转换,。例如,编译一个int转换为Integer ,double到Double 等。如果反过来转换操作称为unboxing 。
6。什么是函数重载?
当同一个类中两个或多个具有完全相同的名称但参数不同的Java方法时,会发生重载。在另一方面,方法覆盖定义:一个子类重新定义的作为父类相同方法。覆盖方法必须具有相同的名称,参数列表和返回类型。
7。什么是构造函数,构造函数重载和拷贝构造函数?
创建一个新的对象时,构造函数被调用。每个类都有一个构造函数 。若程序员不提供构造函数的类,Java编译器(javac)创建一个默认的构造函数。
构造函数重载是类似于Java方法重载。不同的构造函数可以为一个类来创建。每个构造函数都必须有自己独特的参数列表。
Java不支持如C + +的拷贝构造函数,如果你不写你自己的构造函数,Java不会创建一个默认的拷贝构造函数。
8。Java是否支持多重继承?
不,Java不支持多重继承。每个类是能够只在一个类扩展,但能够实现多个接口。
9。接口和抽象类之间的区别是什么?
Java提供和支持创建抽象类和接口。这两种实现共享一些共同的特征,但它们在以下功能有所不同:
在一个接口中的所有方法都是抽象。在另一方面,抽象类可以包含抽象和非抽象方法。
一个类可以实现多个接口,但只能扩展一个抽象类。
为了使一个类实现一个接口,它必须实现其所有声明的方法。但是,一个类可以不实现抽象类的所有声明的方法。不过,在这种情况下,子类也必须声明为抽象类。
抽象类可以实现接口,甚至可以不提供接口方法的实现。
在Java接口中声明的变量默认情况下是final。一个抽象类可以包含非final的变量。
Java接口的成员默认为公用。一个抽象类的成员可以是私有的,保护或公开。
一个接口是绝对抽象的,不能被实例化。一个抽象类,也不能被实例化,但如果它包含一个main方法可以被调用。
10。什么是按引用传递和按值传递?
当一个对象是按值传递,这意味着该对象的副本传递。因此,即使更改了该对象,它不会影响原来的值。
当对象是通过引用传递,这意味着实际的对象不会被传递,而是对象的引用被传递。因此,由外部方法所做的任何更改,将会影响所有地方。
面试与学习资料
推荐一个Java架构群909723834,里面都是同行,相互帮助相互学习(找群主可以免费获取学习和面试资料)
附加java开发的资料(面试资源与经验总结,Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术视频教程资料,架构思维导图,以及面试资料,了解最新的学习动态;了解最新的阿里、京东招聘资讯)
网友评论