1-Java基础 44 道

java基础知识
摘要由CSDN通过智能技术生成

一、Java基础 44 道

1. 解释下什么是面向对象?面向对象和面向过程的区别?

面向过程:
优点是性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源。而Linux\Unix等一般采用面向过程开发,性能是最重要的因素。
面向对象:
优点是易维护,易复用,易扩展。由于面向对象由封装,继承,多态性的特性,可以设计出耦合度低的系统,使系统更加灵活,更加易于维护。

2.面向对象的三大特性?分别解释下?

封装性:封装隐藏对象的属性,并且外界只能通过对外提供的接口进行访问,这个 对外提供的接口一般是指get方法。
继承性:子类可以复用父类的成员和方法,并且可以在现有代码的基础上 进行功能扩展。
多态性:表现形式是,子类对象父类指针,通过父类创建的指针来调用子类的成员和方法,实现了接口的重用。

3.JDK、JRE、JVM 三者之间的关系?

JDK (Java Development Kit)----Java开发工具包,用于Java程序的开发。
JRE (Java Runtime Environment)----Java运行时环境,只能运行.class文件,不能编译。
JVM (Java Virtual Machine)----Java虚拟机,Java运行时环境。
三者关系

4. 重载和重写的区别?

重载:同一个类中,方法名相同,参数不同,其他无要求
重写:子类继承父类,重写方法时,方法名相同,异常小于父类,权限大于父类

  1. Java 中是否可以重写一个 private 或者 static 方法?

不能
static方法 可以被继承,但是不能被重写

首先static方法是编译时静态绑定的,而方法重写时基于运行时动态绑定的。
static方法跟类的实例无关,只跟类有关。虽然不能被重写,但是可以被继承 ;
可以在子类中通过 父类类名.方法名 的形式进行访问,如果父类和子类中拥有相同名称和参数的静态方法,那么该子类其实是隐藏了从父类继承过来的静态方法,这是属于子类自己的方法,而不是重写。
通俗的讲就是,这两个方法是两个没有关系的方法,具体调用哪个就要看是哪个对象的引用,不存在多态的性质。

private只能在当前类使用
privat修饰的方法只能在当前类使用,如果是其他的类继承当前的类是不能访问到private修饰的变量和方法的,当然也不能被覆盖

7. 在 Java 中定义一个不做事且没有参数的构造方法有什么作用?

Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会 调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类 的构造方法中又没有用super()来调用父类中特定的构造方法,则编译时将发生错误,因为 Java程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事 且没有参数的构造方法。

8. Java 中创建对象的几种方式?

(1) 通过new关键字创建对象
(2)通过反射创建对象
(3)Clone方法
(4)反序列化
创建对象

9. 抽象类和接口有什么区别?

抽象类可以有非抽象方法,接口都是抽象方法
抽象类通过extend继承,且只能继承一个抽象类,接口通过implement实现,可以实现多个接口
抽象类中的成员变量可以实现多个权限 public private protected final等,接口中只能用 public static final修饰。

10. 静态变量和实例变量的区别?

1.在语法定义上的区别:

静态变量前要加static关键字,而实例变量前则不加。

2.在程序运行时的区别:

(1)实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。

(2)静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。

(3)总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

(4)举例:对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值