走向大佬之路--JavaSE

本文介绍了Java中的面向对象概念,包括面向对象与面向过程的区别、类的特性如封装、继承和多态,以及重载和重写的概念。还详细阐述了访问修饰符的作用,this关键字的应用,抽象类与接口的区别,成员变量和局部变量、静态变量与实例变量的差异,以及final关键字的使用场景。文章适合Java初学者和面试复习。
摘要由CSDN通过智能技术生成

前言:大家好,我是阿杰,在向往大佬的路上坚定的走着。
本篇文章记录的基础知识,适合在学Java的小白,也适合复习中,面试中的大佬🤩🤩。
如果不足的地方希望各位兄弟指正,嘿嘿大家一起进步。✌✌

🏠个人主页:阿杰的博客
💪个人简介:大家好,我是阿杰,一个正在努力让自己变得更好的男人👨
目前状况🎉:24届毕业生,奋斗在找实习的路上🌟
🚗🚗为了让更多的人看到更优质的博客,阿杰正在努力的更新学习中心中的内容。

👻👻面向对象

面向对象和面向过程的区别:

面向对象:把构成问题的部分分解为一个一个对象,建立这些对象的目的不是实现一个一个步骤,而是为了描述某个事情再解决问题过程中发生的行为。目

​ 的是写出通用的代码,加强代码的复用性。

面向过程:分析解决问题的步骤,用函数把这些步骤一个一个实现,使用时调用一个一个函数。

面向对象的特性:

  • 封装:把一些属性私有化,并且提给一些外界访问的接口

  • 继承:用已存在的类作为基础,扩展新的类。新的类可以定义新的属性或者方法,也可以继承原有类的属性和方法。通过继承很方便的进行代码复用。

    • 子类可以拥有父类的私有属性和方法。只是拥有,不能访问
    • 子类可以自己的属性和方法,即对父类的扩展
    • 子类可以对父类的方法进行重写,用自己的方式实现父类的方法
  • 多态:程序中引用变量所指向的具体类型通过该引用变量发出的方法在编译是并不确定。在程序运行时才确定,变量到底指向哪个类是实例对

    ​ 象,引用的方法到底是哪个类中的实例方法。

重载(overload)和重写(override)的区别?

  • 重载:发生在本类,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同、参数的顺序不同或者三者都不同)则视为重载和返回值没有关系;
  • 重写:和父类的方法名,返回值,参数列表相同;和父类方法有一样的访问范围或者更高,不能比父类被重写方法声明更多的异常

访问修饰符 public、 private、 protected、以及不写(默认)的区别

  • public 可以修饰接口、类、方法、属性、所有人可见
  • private 可以修饰方法、属性 只用本类可见 不能修饰外部类
  • protected 可以修饰方法、属性 同一包下和子类可见 不能修饰外部类
  • default 默认修饰符 可以修饰接口、类、方法、属性、同一包下可见

this 关键字有什么作用?

代指本类对象

this的三种用法:

普通的直接引用

区分局部变量和全局变量

引用本身的构造方法

抽象类(abstract class)和接口(interface)有什么区别?

  1. 从设计层⾯来说,抽象是对类的抽象,是⼀种模板设计,⽽接⼝是对⾏为的抽象,是⼀种⾏为的规范。
  2. 从类的层面来说,一个类可以实现多个接口但是只能实现一个抽象类。接口本身可以通过entends 关键字扩展多个接口。
  3. 从方法层面来说
    • 所有方法在接口中不能有实现(1.8版本开始可以有默认是实现),但是抽象类中可以有非抽象方法
    • 接⼝⽅法默认修饰符是 public ,抽象⽅法可以有 public 、 protected 和 default 这些修饰符(抽象⽅法就是为了被重写所以不能使⽤ private 关键字修饰!)。
  4. 从变量层面来说,接口中除了static、final 变量,不能有其他变量,而抽象类中不一定。

总结⼀下 jdk7~jdk9 Java 中接⼝的变化:

  1. 在 jdk 7 或更早版本中,接⼝⾥⾯只能有常量变量和抽象⽅法。这些接⼝⽅法必须由选择实现接⼝的类实现。
  2. jdk 8 的时候接⼝可以有默认⽅法和静态⽅法功能。
  3. jdk 9 在接⼝中引⼊了私有⽅法和私有静态⽅法。

成员变量与局部变量的区别有哪些?

  • 从语法上看 成员变量属于类 可以访问控制修饰符和static 修饰,而局部变量是方法中定义的参数或方法内的变量 不能被访问控制修饰符和static 修饰,但是都可以使用final所修饰
  • 基本数据类型的变量,成员变量有默认值(final修饰的值必须显式的赋值),局部变量没有默认值。
  • 从变量在内存中的时间来说: 成员变量随着对象的创建而创建,局部变量随着方法的调用而销毁。
  • 从变量在内存中的空间来说:成员变量存入堆内存,局部变量存在栈内存,如果局部变量是引用数据类型,存入的是对堆内存对象地址的引用或者指向常量池的地址。

静态变量和实例变量的区别?静态方法、实例方法呢?

静态变量:被static修饰符修饰的变量,就是类变量。一个类不管创建了多少的对象,静态变量在内存中有且只有一个副本。

实例变量:必须存在某一个是实例,需要先创建对象才能访问实例对象。静态变量可以让多个对象共享内存。

静态方法:static 修饰的方法,也被称为类方法。在外部调⽤静态⽅法时,可以使⽤"类名.⽅法名"的⽅式,也可以使⽤"对象名.⽅法名"的⽅式。静态方法里不能访问类的非静态成员变量和方法。

实例方法:依存于类的实例,需要使用"对象名.⽅法名"的⽅式调用;可以访问类的所有成员变量和方法。

final 关键字有什么作用?

final 是最终的意思,可以修饰类,属性,方法

  • 被final修饰的类不可继承
  • 修饰的方法不可重写
  • 被修饰的变量不可变 被修饰的变量必须显式的赋值,值得注意的是不可变值得是引用不可变,不是内容不可变。

final、finally、finalize 的区别?

==和 equals 的区别?

hashCode 与 equals?

Java 是值传递,还是引用传递?

深拷贝和浅拷贝?

深拷贝和浅拷贝?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值