1,面向对象的特性有哪些?
封装:封装是指将对象的实现细节隐藏起来,然后通过公共的方法来向外暴露出该对象的功能
多态:同一个行为具有多个不同表现形式或形态的能力
多态的条件:1)继承;2)重写;3)向上转型
继承:面向对象实现软件复用的重要手段,当子类继承父类后,子类是一种特殊的父类,能直接或间接获得父类里的成员
缺点:1)继承是一种强耦合关系,父类变子类也必须变;2)继承破坏了封装,对于父类而言,它的实现细节对子类来说都是透明的。
抽象:从特定的角度出发,从已经存在的一些事物中抽取我们所关注的特性、行为,从而形成一个新的事物的思维过程,是一种从复杂到简洁的思维方式
2,面向对象和面向过程的区别?
面向过程:一种站在过程的角度思考问题的思想,强调的是功能行为,功能的执行过程。最小的程序单元是函数
1)缺陷:采用置顶而下的设计方式
2)问题:设计不够直观,与人类的习惯思维不一致;系统软件适应性差,可扩展性差,维护性低
面向对象:一种基于面向过程的新的编程思想,强调的是具备某些功能的对象
特点:稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性。在软件工程上,面向对象可以使工程更加模块化,实现更低的耦合和更高的内聚。
3,JDK 和 JRE 的区别是什么?
Java 开发工具包(JDK)是完整的 Java 软件开发包,包含了 JRE(Java 运行时环境:Java 虚拟机、Java 核心类库和支持文件),编译器和其他的工具(比如 JavaDoc, Java 调试器),可以让开发者开发、编译、执行 Java应用程序。
4,Java 中覆盖和重载是什么意思?
覆盖(Override)是指子类对父类方法的一种重写
注意:被覆盖的方法不能是 private 的
重载(Overload)表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同
条件:参数类型不同、参数个数不同、参数顺序不同
5,抽象类和接口的区别有哪些?
1)抽象类中可以没有抽象方法;接口中的方法必须是抽象方法
2)抽象类中可以有普通的成员变量;接口中的变量必须是 static final 类型的,必须被初始化,接口中只有常量,没有变量
3)抽象类只能单继承,接口可以继承多个父接口
4)Java 8 中接口中会有 default 方法,即方法可以被实现
注意:如何选择接口还是抽象类?
如果要创建不带任何方法定义和成员变量的基类,那么就应该选择接口而不是抽象类
6,Java和C++的区别?
1)都是面向对象的语言,都支持封装、继承和多态
2)指针:Java不提供指针来直接访问内存,程序更加安全
3)继承: Java的类是单继承的,C++支持多重继承;Java通过一个类实现多个接口来实现C++中的多重继承; Java中类不可以多继承,但是!!!接口可以多继承
4)内存: Java有自动内存管理机制,不需要程序员手动释放无用内存
7,static关键字
关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。
1)static静态关键字
2)static可以用来修饰成员变量和成员方法
注:Java中是否不可以覆盖(override)一个 private 或者是 static 的方法
浙公网安备 33010602011771号