当前位置: 首页 > news >正文

JavaSE面试

①.简述面向对象的三大特征

封装、继承、多态

1.封装:

        概念:

                是将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

        好处 :

           ①便于修改,增强了代码的可维护性。

           ②隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。

           ③提高了安全性。

        实现:

            使用private修饰符实现属性私有化,并提供setter和getter方法

2.继承:

        概念:

                 继承是把多个类中相同的内容给提取出来定义到一个类中,这个类就叫做父类,又称超类或基类,而多个类就是子类

        好处:

             ①提高了代码的复用度,减少了代码的重复,提高软件开发效率

             ②继承的出现让类与类之间产生了关系,提供了多态的前提

        实现:

             通过关键字extends可以声明一个类是从另外一个类继承而来

3.多态

        概念:

                接口的多种不同实现方式,父类型引用指向子类型对象。
        好处:

             ①简化了代码

             ②提高了维护性和扩展性
        缺点:

              ①通过父类引用操作子类对象时,只能使用父类中已有的方法,不能操作子类特有的方法

        实现:

             ①存在继承关系

             ②存在方法重写

             ③父类型引用指向子类型对象
 

接口和抽象类的区别

    接口    抽象类
构造方法     无    有,用于子类实例化使用
抽象方法/具体方法    只有抽象方法    可以有抽象方法和具体方法
修饰符    只有private    四种修饰符都有(public 、缺省、protected、private)
成员变量    只能是常量(省略 public static final )    可以是变量,也可以是常量
 

具体方法:静态方法、默认方法

1.为什么要引入静态方法?

        ​ 解决接口的修改与现有的实现不兼容问题。因为以前要加入抽象方法时,抽象类必须要实现方法,加入默认方法后,后续实现的接口,对他们没有多大影响。

2.为什么要引入默认方法?

​         引进静态方法之后,可以通过接口名来调用,不用通过new实现类了。
 

重写
        1.发生在子类中

        2.方法名、形参列表、返回类型都相同,权限修饰符的范围要大于父类方法,声明异常范围要小于父类方法

        3.子类和父类再同一个包中,子类可以重写父类所有的方法。除了声明为private和final的方法和构造方法
 

重载
        1.发生在同一类中

        2.方法名相同,参数列表、返回类型、权限修饰符可以不同
 基本类型和封装类型

包装类
          直接能够将简单类型的变量。在执行变量类型相互转换时,会使用大量包装类

基本类型 VS 包装类型

基本类型    包装类型
声明方式不同    不需要new来创建    需要通过new的关键字的方式来创建
存储方式及位置不同    是直接存储变量的值保存在堆栈中能高效的存取    需要通过应用指向实例,具体的实例保存在堆中
初始值不同    视具体值而定    初始值为null
使用方式不同        eg:集合类合作使用时只能使用包装类型


基本类型和包装类型相互转换

        基本类型--->包装类型:   通过new Integer(6);  

        包装类型--->基本类型:   通过parseInt(); 

原文链接:https://blog.csdn.net/qq_44419734/article/details/131348078

  •  ==

        1.如果比较的对象时基本类型,则比较数值是否相等

        2.如果比较的是应用数据类型,则比较的对象是内存地址是否相等

  • equals

        用来比较两个对象的内容是否相等

String 类能被继承吗,为什么

String 是一个 final 修饰的类,被final 修饰类不可以被继承

原因: 
       1. 效率性,String 类作为最常用的类之一,禁止被继承和重写,可以提高效率
        2.安全性,String 类中有很多调用底层✁本地方法,调用了操作系统的API,如果方法可以重写,可能被植入恶意代码,破坏程序 

                        
原文链接:https://blog.csdn.net/qq_44419734/article/details/131348078

final:
        ​ 可以修饰全局变量,表示此变量必须赋初值,且后期不可更改。

​         可以修饰局部变量,表示该局部变量可以不赋初值,一旦赋值后不可更改。

​         可以修饰类,表示该类不可被继承

​         可以修饰方法,表示该方法,不可以被重写
 

finally:
​         通常与try-catch联用,声明在finally的语句代码块一定会被执行。

        ​ 一般用于资源释放。
 

finalize:
​         是垃圾回收机制中使用到的方法。
 

http://www.lryc.cn/news/369067.html

相关文章:

  • 安全漏洞扫描工具
  • 前端开发部署:Visual Studio Code + vue
  • 基于Sentry+OpenTelemetry实现微服务前后端全链路监控
  • jquery.datetimepicker无法添加清除按钮的问题
  • Qt中解决编译中文乱码和编译失败的问题
  • Android状态栏适配问题
  • 如何为色盲适配图形用户界面
  • 【爬虫实战项目一】Python爬取豆瓣电影榜单数据
  • AI-知识库搭建(一)腾讯云向量数据库使用
  • AI数据分析:根据Excel表格数据绘制柱形图
  • 基于协调过滤算法商品推荐系统的设计
  • CS1061 “HtmlHelper”未包含“Partial”的定义,并且找不到可接受第一个“HtmlHelper”类型参数的可访问扩展方法“Partial”
  • 大数据运维学习笔记之flink standalone flink on yarn集群搭建 —— 筑梦之路
  • 在知识的海洋中航行:问题的演变与智慧的追求
  • splice()、slice()、split()三种方法的区别
  • iOS 之homebrew ruby cocoapods 安装
  • 【栈】2751. 机器人碰撞
  • 贪心算法06(leetcode738,968)
  • cve_2022_0543-redis沙盒漏洞复现 vulfocus
  • 浅解Reids持久化
  • Java24:会话管理 过滤器 监听器
  • web前端电影简介标签:深度解析与创意应用
  • Java面向对象-方法的重写、super
  • 解锁ChatGPT:从GPT-2实践入手解密ChatGPT
  • 20240605解决飞凌的OK3588-C的核心板刷机原厂buildroot不能连接ADB的问题
  • c++手写的bitset
  • 【机器学习系列】深入理解集成学习:从Bagging到Boosting
  • 用FFMPEG对YUV序列进行编辑的笔记
  • 智能投顾:重塑金融理财市场,引领行业新潮流
  • iOS18 新变化提前了解,除了AI还有这些变化