Day2-基础知识

面向对象

Java面向对象是一种编程范式,它以对象为基本单位,通过封装、继承和多态等机制来组织和管理代码。以下是我对Java面向对象的理解:

面向对象 ( Object Oriented ) 是将现实问题构建关系,然后抽象成 类 ( class ),给类定义属性和方法后,再将类实例化成 实例 ( instance ) ,通过访问实例的属性和调用方法来进行使用。面向对象有三大特性,封装、继承和多态。

封装:将属性和方法封装在类中。通过访问修饰符,可以控制对类的成员的访问权限,实现数据的隐藏和保护。隐藏内部细节,只暴露给外界访问方法。

继承:继承是一种代码重用和扩展的机制,它允许一个类继承另一个类的属性和方法。子类继承父类的特性,并可以在此基础上添加新的属性和方法,实现代码的复用和扩展。

多态性:多态性是指同一类型的对象在不同情况下表现出不同的行为。多态的前提是继承加重写,父类引用指向子类对象。抽象类与接口是实现多态的关键。抽象类是不能被实例化的类,它定义了一些抽象方法和非抽象方法,供子类实现或继承。接口是一种纯粹的抽象类型,它定义了一组方法的签名,实现类必须实现这些方法。多态性提高了代码的灵活性和可扩展性。

1.创建对象的方式有哪些

  1. new 对象
  2. 反射创建对象
  3. 反序列化
  4. clone

接口

被interface修饰的类叫接口,理解为是一种特色的类,由全局常量和公共的抽象方法所组成。通过implements来实现接口,接口与类之间可以多实现,接口与接口之间可以实现多继承,降低了耦合性

抽象类

Java中被abstract关键字修饰的方法叫抽象方法,只有声明没有方法体。
被abstract关键字修饰的类叫抽象类,可以不包含抽象方法,不可被实例化
子类继承抽象类之后,a.继续抽象,b.重写父类的所有抽象方法
abstract不能与private连用,子类无法重写
abstract不能与static连用,存在加载顺序的问题
abstract不能与final连用,无法重写

接口与抽象类的区别

实现:抽象类的子类使用extends来继承;接口必须使用implements来实现接口
构造函数:抽象类可以有构造函数;接口没有
实现数量:类可以实现很多个接口;但是只能继承一个抽象类
访问修饰符:接口中的方法默认使用public;抽象类中的方法可以是任意访问修饰符
何时使用
需要为一些类提供公共的实现代码时,应优先考虑抽象类
当注重代码的扩展性跟可维护性时,应当优先采用接口

重写 、 重载

1.重写
重写也可以看做覆盖,子类重新定义父类中具有相同名称和参数的虚函数,函数特征相同,但函数的具体实现不同,它主要在继承关系中出现
1.继承以后,子类就拥有了父类的功能。
2.在子类中,可以添加子类特有的功能,也可以修改父类原有的功能。
3.子类中方法的签名与父类完全一致时,会发生覆盖/复写的现象
4.父类的私有方法不能被重写
5.重写的要求是:两同两小一大

两同:方法名 参数列表完全一致
两小:
子类返回值类型小于等于父类的返回值类型
子类抛出异常小于等于父类方法抛出异常
一大:子类方法的修饰符权限要大于等于父类被重写方法的修饰符权限

2.重载
重载是函数名相同,参数列表不同,重载只是在类的内部存在,但是不能返回类型来判断。

1.重载overload与重写override的区别

重载:是一个类中的现象,同一个类中存在方法名相同,参数列表不同的方法
重写:是指建立了继承关系之后,子类对父类的方法不满意,可以重写,遵循两同两小一大的原则
重载的意义:是为了外界调用方法时方便,不管传入什么样的参数,都可以匹配到对应的同名方法
重写的意义:在不修改源码的情况下,进行功能的修改与拓展(OCP原则:面向修改关闭,面向拓展开放)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值