Java基础知识点总结
1.谈谈你对面向对象的理解?
对象就是把数据和对数据的操作方法放在一起作为一个整体。
类就是对同类对象抽象出其共性。类通过一个简单的外部接口与外界发生交换,对象与对象之间通过消息进行通信。
封装:封装把一个对象的属性私有化,不允许外部对象直接访问这些私有属性。同时提供一些可以被外界访问的属性的方法。
继承:继承是子类继承父类的非私有属性和方法。子类可以对父类的方法进行重写,也可以进行扩展,拥有自己的属性和方法。一个子类只能拥有一个父类,但是可以通过实现多个接口来达到多重继承的目的。
多态:多态表示当同一个操作作用在不同对象时,会有不同的结果。在Java语言中,多态主要有两种表现形式,方法的重载和重写。
1.方法重载:重载就是同一个类中多个同名方法根据不同的传参来执行不同的逻辑处理。方法名必须相同,参数类型不同、个数不同、顺序不同。
2. 面向对象和面向过程的区别?
面向过程 :面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。
面向对象 :面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,面向对象性能比面向过程低。
问:Java作为一种编程语言性能不高的原因是否是因为面向过程性能比面向对象高?
3. Java面向对象的5大设计原则
①单一职责原则:一个类只负责一个功能的实现
②里氏替换原则:只要父类出现的地方,都可以用子类替换
③依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象。就是面向接口编程。
④接口隔离原则:接口的功能尽可能单一。接口更可能细化,不要建立臃肿庞大的接口。
4. JDK、JRE、JVM的关系
JVM:JVM是运行Java字节码的虚拟机
JDK:Java开发工具包,它能够创建和编译程序。JDK包含JRE
JRE:Java运行时环境,它是运行已编译的Java程序所需的所有内容的集合。包含JVM,Java类库,Java命令等一些基础构建,但是不能用于创建新程序。
5.在Java类中定义一个无参构造方法的作用?
Java 程序在执⾏⼦类的构造⽅法之前,如果没有⽤super() 来调⽤⽗类特定的构造⽅法,则会调⽤⽗类中“没有参数的构造⽅法”。因此,如果⽗类中只定义了有参数的构造⽅法,⽽在⼦类的构造⽅法中⼜没有⽤super() 来调⽤⽗类中特定的构造⽅法,则编译时将发⽣错误,因为 Java 程序在⽗类中找不到没有参数的构造⽅法可供执⾏。解决办法是在⽗类⾥加上⼀个不做事且没有参数的构造⽅法。
如果一个类中没有为其定义构造方法,那么它会默认提供一个无参构造方法,而你定义了有参构造方法以后,无参构造方法就不会默认提供了,要自己创建。
6.Java中普通类和抽象类的区别?
关键点:abstract修饰符(抽象方法)、具体实现过程、实例化、子类实现父类的抽象方法
1.抽象类可以含有抽象方法(这里有个问题要注意一下,抽象类也可以不含有抽象方法)
2.抽象类必须要有abstract关键词修饰
3.抽象类不能被实例化,必须通过其非抽象子类(就是这个抽象类的子类,但是这个子类不能是抽象类)来创建实例。
4.抽象类的访问权限
JDK1.8之前,访问权限限于public和protected,如果不写或者是private则无法被子类继承。
JDK1.8之后, 把访问的权限变成了public 、protected和default(注意:这个default就是啥也不写,不是default关键字。)
7.值传递和引用传递?
值传递:是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递:是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
8.深拷贝和浅拷贝
浅拷贝:对基本数据类型进行值传递。对引用数据类型只是进行引用的传递,而没有真实的创建一个新的对象,此为浅拷贝。
深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。
#高频知识点汇总##Java##学习路径#