Connor学Java - Day01

在这里插入图片描述

Learn && Live

虚度年华浮萍于世,勤学善思至死不渝

前言

​Hey,欢迎阅读Connor学Java系列,这个系列记录了我的Java基础知识学习、复盘过程,欢迎各位大佬阅读斧正!原创不易,转载请注明出处:http://t.csdn.cn/cTJ3c,话不多说我们马上开始!

1.什么是面向对象?

面向对象的编程以对象为中心,以消息为驱动,它主张将具有相同特性(数据元素)和行为(功能方法)的一个个独立的对象抽象成一个类(对应现实生活中的某一类别),这个类中封装了根据对象抽象出的属性、访问属性数据的接口和方法。当需要借助这个类实现某一功能时,则需要通过实例化类生成一个对象(对应现实生活中属于该类别的具体物品),由对象调用方法实现功能。

Java作为一个把面向对象作为“卖点”的编程语言,无时无刻无处不在体现着“万事万物皆对象”的思想:

(1)Java语言范畴中,我们都将功能、结构封装到类中,通过类的实例化来调用具体的功能结构;

(2)在实际的开发场景中,Android客户端与后端、后端与数据库交互的整个过程中无不体现着类与对象的思想和应用。

面向对象有三大特性,分别是:

(1)封装:通常认为封装是把数据和操作数据的方法封装起来,对数据的访问只能通过已定义的公开的接口;

(2)继承:继承是从已有类得到继承信息(并进一步细化扩展)创建新类的过程。提供继承信息的类被称为父类、超类、基类,得到继承信息的被称为子类、派生类;

(3)多态:分为编译时多态和运行时多态

编译时多态:即重载,同一个类中,允许存在一个以上的同名但不同参数列表(参数个数、参数类型、参数类型的顺序)方法,注意与返回值类型无关。那为什么叫编译时多态呢?静态绑定:在编译时,编译器会根据方法不同的参数列表对同名方法的名称做修饰来区分,它们的调用地址在编译期就已经绑定了。

运行时多态:与重写相关,但不完全等同于重写。对于多态性的实际描述应该是父类引用指向子类的对象,并调用了子类的方法,即多态性需要满足三大前提:继承、重写、父类引用指向子类对象。那为什么叫运行时多态呢?动态绑定:详细理解见下图:
在这里插入图片描述
补充

重写的要求

(1)父类、子类中同名、同参数;

(2)子类重写方法的返回值类型:①void或基本数据类型:与父类的方法一致;②自定义类型,子类的类型不能大于父类的;

(3)子类重写方法抛出的异常类型不能大于父类的;

(4)子类重写方法的访问权限不能小于父类的;

(5)不可重写private修饰的方法:private修饰的变量和方法只能在当前类中使用,子类无法访问,自然无法重写(注意这里是访问,而不是继承,子类是可以继承父类中的所有属性和方法的);

(6)不可重写static修饰的方法:方法重写是基于运行时动态绑定的,而static方式是编译时静态绑定的,且属于类而不属于对象;如果父类和子类中存在同名同参数的static方法,被称为方法隐藏,由调用的对象或类来确定调用的是哪个方法

(7)不可重写父类的构造器:首先先明确构造方法的特性:①名字与类名相同;②没有返回值;③创建对象时自动执行,无需调用。很显然第一条就不符合,自然不能重写。

对象类型转换

(1)向上转型:即上述运行时多态,不在复述

(2)向下转型:强转父类的引用,注意不能强转父类的对象,且要求父类的引用必须指向的是子类对象。当向下转型后,可以调用子类中的成员。
在这里插入图片描述

2.面向过程和面向对象的区别?

(1)编程思路:面向过程强调的是功能行为,以实现功能的函数开发为主,考虑怎么做;面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能,不仅考虑怎么做,还考虑谁来做,强调具备功能的对象;

(2)封装性:都具有封装性,但是面向过程封装的是功能,而面向对象封装的是数据和功能;

(3)面向对象还具有继承性和多态性,而面向过程没有。

都具有封装性,但是面向过程封装的是功能,而面向对象封装的是数据和功能;

(3)面向对象还具有继承性和多态性,而面向过程没有。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ConnorYan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值