面向对象的笔记

1、面向对象思想编程的内容有什么?

1).类及类的成员:属性、方法、构造器
2).其他关键字:this,super,abstract,interface,static;等等
3).面向对象的三大特征:封装性、继承性、多态性。

1.1、面向对象和面向过程

面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。
面向对象:强调具备了功能的对象,以类和对象为最小单位,考虑谁来做。

1.2、面向对象思想的体现:类和对象的创建执行操作有几步?

第一步:创建类
第二步:类的实例化
第三步:调用对象的结构来完成功能的设计-“对象.属性或对象.方法” 来调用对象的结构。

1.3、属性和局部变量的区别和相同点

相同点:

  1. 先声明,后使用
  2. 变量都对其对应的作用域
  3. 定义的格式:数据类型 变量名 =变量值

不同点:

  1. 在类中声明的位置不同
  2. 关于权限修饰符的不同
  3. 默认初始化的情况:
    属性有默认值,局部变量没有初始化默认值,需要调用前要给他赋值。
  4. 加载的内存的位置不同:
    属性:加载到对空间中(目前还没有学到static)
    局部变量:加载到栈空间中

1.4、谈谈对面向对象类和对象的理解,并指出两者的关系?

答:类是一系列抽象事物的描述,是抽象的,概念上的内容。
对象是一个实际存在内存当中占用空间的该类事物的一个个体也被称为实例。
>面向对象程序设计的重点是考察类的设计
>设计类,就是设计类的成员
他们两个之间的关系:对象是由类派生出来的

举个例子比如我们要跟控制台去交互需要使用一个scanner类,真正实现的话我们需要创建一个scanner类的对象,然后通过对象去调用他的功能和方法去完成我们与控制台的交互。

1.5、个人思路

在完成一个功能需求的时候先考虑他在现实世界当中的实体是什么,再把现实中的实体抽象成一个概念当中的一个类,再看看在java语言当中是如何来描述这个类,然后再通过这个类去造这个对象去完成这个功能。

2、方法的重载

2.1、重载的概念

在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。
重载的特点:
与返回值类型无关,只看参数列表,且参数列表必须不同。调用时,根据方法参数列表的不同来区分。
两同一不同:同一个类,相同方法名,但是参数列表不同。
判断是否是重载:
跟方法的修饰符、返回值类型、形参变量名、方法体都没有关系。

2.2、说明Java方法中的参数传递机制的具体表现

基本数据类型:数据值
引用数据类型:地址值(含变量的数据类型)

3、面向对象特征:封装

Java权限修饰符public、protected、private置于类的成员定义前,用来限定对象对该类成员的访问权限。
class的权限修饰符只可以用public和default。
public类可以在任意地方被访问。
default类只可以被同一个包内部的类访问。

3.1、封装的定义

封装就是隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性,简单的说:把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。

封装性的体现:
我们将类的属性私有化,同时,提供公共的public方法来获取get和设置set方法
封装型的体现:不对外暴露属性,不对外暴露私有的方法,单例模式
Java规定的4种权限:private、缺省、protected、public,这4种权限可以用来修饰类和内部结构比如:属性、方法、构造器、内部类。修饰类的话,只能使用,缺省、public。

3.2、程序设计追求“高内聚,低耦合”

高内聚:类的内部数据操作细节自己完成,不允许外部干涉
低耦合:仅对外暴露少量的方法用于使用。

3.3、类的三大结构之一构造器的使用

类的结构之三:构造器的使用
创建对象,初始化对象的属性,
如果没有显示的定义构造器,
系统就会提供一个空参的构造器。
定义构造器的格式,权限修饰符 类名(形参列表){}
一个类中定义的多个构造器,彼此构成重载
一旦我们显示的定义了类的构造器之后,系统就不在提供默认的空参构造器。

3.4、属性赋值过程

属性赋值的先后顺序

  1. 默认初始化值
  2. 显式初始化值
  3. 构造器初始化
  4. 通过对象.方法或对象.属性的方式赋值。
    以上的先后顺序:
    1-2-3-4

4、面向对象三大特征继承性

4.1、继承性的理解

继承性的好处:
减少了代码的冗余,提高了代码的复用性
便于功能的扩展
为之后的多态性的使用,提供了前提

4.2、继承性的体现

  1. 一旦子类继承父类以后,子类中就获取了父类中声明的所有的属性和方法。
    特别的,父类中声明为private 的属性和方法,子类继承父类以后,仍然认为获取了父类中私有的结构。
    只因为封装性的影响,使得子类不能直接调用父类的结构而已。
  2. 子类继承父类以后,还可以声明的特有的属性和方法。实现功能的拓展。子类和父类的关系,不同与子集和集合的关系。
  3. 继承性的相关规定
    一个类可以被多个子类继承。
    一个类只能有一个父类:Java中类的单继承性。
    子父类是相对的概念。体现出了一个多层继承的关系。
    子类直接继承的父类称为直接父类,间接继承的父类称为间接父类。
    子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法。
  4. 如果我们没有显示的声明一个类的父类的话,则此类继承于java.lang.object类
    所有的java类都直接或间接的继承于object类。
    意味着,所有的java类中都具有object类声明的功能。

4.3、方法的重写

定义:
在子类中可以根据需要对从父类中继承来的方法进行改造,也称为方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。

  1. 子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作。

  2. 重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的方法时,实际执行的时子类重写父类的方法。

  3. 重写的规定:
    方法的声明:权限修饰符 返回值类型 方法名(形参列表){方法体}
    子类中的叫重写的方法,父类中的叫被重写的方法
    子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同。
    子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符(子类不能重写父类中private的方法)。

  4. 返回值类型:父类被重写的方法的返回值类型是void,则子类重写的这个方法的返回值类型也只能是void
    父类被重写的方法的返回值类型是Object类型,则子类重写的方法的返回值类型可以是Object或者是String子类的类型。

  5. 子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型。

  6. –子类和父类中的同名同参数的方法要么都声明为非static的,要么都声明为static的,静态的方法不能被覆盖所以添加了static之后就不叫重写。

区分方法重载和重写的区别

1.重载是需要同类型同名不同参数列表的方法,重写是同名同参数的方法。
重载是重写同一个类从而添加出新的方法,重写是覆盖原来的方法。

4.4、super关键字

  1. super理解为:父类的
  2. super可以用来调用:属性、方法、构造器
    总结:只要出现了子父类同名的方法想要调父类的属性或者方法就要使用super。

super调用父类的构造器必须声明在子类构造器的首行,我们在类的构造器中this和super首行只能二选一,不能同时出现(默认出现的是super)。
在类的多个构造器中,至少有一个类的构造器中使用了super,调用父类中的构造器。

Date:2022/10/11version:1.7
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值