Java基础知识_类、方法、面向对象

本文深入解析Java中的类构造、重载与重写,讲解了构造函数的创建、隐显参数的应用,以及类的初始化顺序。同时涵盖面向对象设计原则和抽象类与接口的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造函数

  • 和类名一致
  • 可以进行重载
  • 不可以重写
  • 没有返回值
  • new 调用
  • 如果没有自定义的构造函数,那么java会创建一个无参构造函数
  • super this(位于构造函数中有效代码的第一行)

隐式参数和显式参数

  • this 指向的是 谁调用这个方法就指向谁

public void setSex(int sexGet){
    this.sex = sexGet;
    //此处的this即为下文中的对象s,是该函数的隐式参数
    //sexGet为显示参数
}


Student s = new Student();
s.setSex(1);

方法参数

  • Java中都是按值传递(在栈中从新clone出来的)

static

  • 所标记的方法、变量为类所有,无需通过对象调用

方法的重写和重载

  • 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
  • 重载是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

返回值类型不是方法签名的一部分

⭐类的初始化顺序

  • 在类第一次加载的时候,依照定义顺序的顺序对静态域进行初始化操作
  • 随后在每次调用构造器的时候
    • 将所有数据域都初始化为默认值(0、false或null)
    • 按照在类声明中出现的次序、依次执行所有域初始化语句和初始化块
    • 如果构造器第一行调用了第二个构造器,即执行第二个构造器的主体
    • 执行这个构造器的主题。

⭐理解方法调用

1、编译器查看对象声明类型和方法名

2、编译器将查看调用方法时提供的参数类型

3、如果是private、static、final方法或构造器,编译器可以很准确的指导调用的时哪个方法(静态绑定)。

4、虚拟机在对象所声明的类里面进行查找,若没有则查找该类的父类。(动态绑定)

为节约时间,虚拟机预先为所有类创建一个方法表,其中列出了所有方法的签名和实际调用的方法。调用方法时,虚拟机只需要查找这个表。

面向对象设计

  • 理解:
    面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
  • 特点:封装、继承、多态

多态

优点:

  • 提高代码安全
  • 提高代码复用性
  • “高内聚”:封装细节,便于修改内部代码,提高可维护性
  • “低耦合”:简化外部调用,便于调用者使用,便于扩展和协作

抽象类和接口

  • 抽象类
    • 父类知道子类一定要完成的某个功能,但是每个子类有自己的完成方式
    • 子类以后只用自己重写的功能,而不用父类的功能,就可以将对应的功能在父类中定义成抽象方法
    • 抽象类是为了约束子类必须拥有而且必须重写某个固定的抽象方法
    • 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类
  • 接口和抽象类的区别:

(1)抽象类可以有构造方法,接口中不能有构造方法。

(2)抽象类中可以有普通成员变量,接口中没有普通成员变量

(3)抽象类中可以包含静态方法,接口中不能包含静态方法

(4) 一个类可以实现多个接口,但只能继承一个抽象类。

(5)接口可以被多重实现,抽象类只能被单一继承

(6)如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法

  • 接口和抽象类的相同点:

(1) 都可以被继承

(2) 都不能被实例化

(3) 都可以包含方法声明

(4) 派生类必须实现未实现的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值