java面向对象

第四章复习笔记

●面向过程:procedure oriented programming 缩写 POP

分析出解决问题所需要的步骤,然后把步骤一步步实现

面向过程直接关注流程

●面向对象:object oriented programming 缩写OOP 面向对象的编程语言

以分类的方式进行思考和解决问题

面向对象先对整体关系作出分类,然后根据不同的类深入细节的处理

对于面向过程和面向对象:

面向对象无法取代面向过程,它们是相辅相成的。面向对象关注与从宏观上把握事物的联系,在具体到某个细节实现时,仍然采用面向过程的思维方式。面向对象如果离开了面向过程,就无法实现真正的落地,成为无源之水。

类:类是一个模板,他描述一类事物的属性和行为的集合。

类时表是一个客观世界某类群体的一些基本特征的抽象

类的结构:

成员变量:事物属性的描述

方法:事物的行为

构造方法:用于创建对象

内部类:即在类体中声明的类

块:一段没有名称的代码块

类的声明格式:

[访问权限修饰符] [修饰符] class Car{

}

访问修饰符有两种public,无(默认)

修饰符:final,abstract

关键字class用来定义一个类

对象:对象是类的一个实例,是以类为模板在内存中创建实际的实例。

Car x1 = new Car();

同一个类中不同对象有不同的成员变量存储空间

同一个类中每个对象共享该类的方法

类和对象:

类是一类事物的抽象概念,是一个模型。

对象是有这个模型所创造的一个个具体存在的,实实在在的实例

所以创建对象的过程也叫实例化对象

现实生活中现有对象后有类,而编程时先设计类后创建对象

变量分类:

分为成员变量和局部变量:

成员变量:

成员变量是定义在类中,方法体之外的变量

可以使用java语言中任何一种数据类型(基本类型和引用类型)

在定义时可以对其初始化,如果不初始化,java使用默认值对其初始化

成员变量在创建对象时会从类中复制一份到对象中

成员变量可以被类中方法、构造方法和特定类的语句块访问

成员变量的作用范围是整个类体

局部变量:

在方法、构造方法或者语句块中定义的变量被称为局部变量

局部变量可以使用java语言中任何一种数据类型

必须使用前初始化赋值

声明和初始化都是在方法中,方法结束后会自动销毁

方法分类:

成员方法:

语法格式:

修饰符 返回值类型 方法名(参数列表){

方法体语句;

[return 返回值]

}

构造方法:用来初始化对象的方法

构造方法:

在构造方法中为创建的对象初始化赋值

一旦在java中定义一个构造方法后,默认的无参构造方法即失效

一个类可以有多个构造方法

方法的重载:一个类中具有相同的名字,但参数不同的多个方法

参数不同(数量不同,类型不同,顺序不同)

调用时,会根据不同的参数表选择对应的方法

方法的重载跟方法的返回值类型没有任何关系

Car bm= new Car();

包含了三个动作:

一:右边的"new Car()",是以Car类为模板,调用Car类的构造函数,在堆空间里创建一个Car类对 象

二:左边的"Car bm"创建一个Car类型引用变量。

三:"="操作符使对象引用指向刚创建的那个Car对象

值传递:(形参类型是基本数据类型时):方法调用时,实际参数把他的值传递给对应的形式参数, 形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行 中形式参数值的改变不影响实际参数的值。

引用传递:(形参类型是引用数据类型参数):也成传地址。方法调用时,实际参数是对象,这时实际参数和形式参数指向同一个地址,方法执行中,对形式参数的操作就是对实际参数的操作,这个结果在方法结束后被保留了下来。

this关键字:

this关键字代表当前对象

使用this关键字引用成员变量

使用this关键字引用成员方法

static关键字:

static被称为静态,可以修饰类的属性,方法,代码块,内部类。

随着类的加载而加载

优先于对象存在

修饰的成员,被所有对象共享(不管创建了多少对象,静态属性在内存中只有一个)

可以不创建对象,类名调用

在static方法内部只能访问类的static属性,不能访问类的非static属性,static属性先加载

代码块:

实例块:{

//任何符合语法的Java代码

}

静态块:

static{

//任何符合语法的Java代码

}

包:

为了更好地组织类,java提供了包机制,用于区别雷鸣的命名空间

1)避免类重名

2)按照不同功能管理类

3)控制访问权限

访问权限修饰符:

封装:

将类的某些信息隐藏的类内部,不允许外部程序直接访问,二是通过该类提供的方法来实现对隐藏信息的操作和访问。

封装的好处:

只能通过规定方法访问

隐藏类的实现细节

方便加入控制语句

方便修改实现

继承:

继承是面向对象程序设计不可缺少的设计思想,是实现代码可重用的根基,是提高代码可扩展性的主要途径。

继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并扩展新的能力

extends关键字表示继承关系

不支持多继承,一个类只能有一个直接父类

子类可以调用父类所有非私有属性和非私有方法

当一个没有继承任何一个类时jvm会默认让类继承Object类

Object类时java为所有类提供的基类

继承中的构造方法:

子类构造方法会先调用父类构造方法 使用super关键字调用父类任意一个构造方法,必须写在构造方法的第一行 如果子类的构造方法中没有显式地调用基类构造方法,则系统默认调用基类无

参数的构造方法。

super关键字用途:

使用super关键字访问父类成员

super.成员变量名

super.方法名(参数列表)

super.构造方法(参数列表)

super不是父类对象

方法的重写:

当父类的方法实现不能满足子类的要求时,可以对方法进行重写(override)

重写规则:

方法名相同,参数列表相同,返回值类型相同,访问权限不能小于父类权限

●构造方法,静态方法不能重写,成员变量不存在重写

抽象类:

抽象放法:

是一种特殊的方法,只有声明,没有具体的实现

必须用abstract关键字进行修饰

如果一个类中没有包含足够的信息来描绘一个具体的对象,这个类就是抽象类

抽象类除了不能实例化对象之外,类的其他功能依然存在,成员变量,成员方法,构造方法

用abstract修饰的类就是抽象类。如果某个类中柏寒抽象方法,那么该类就必须定义成抽象类

特点:

不能被实例化,但可以有构造方法,因为抽象类中无具体实现的方法,所以不能用抽象类创建对象

抽象类只能作基类,表示的是一种继承关系。继承抽象类的非抽象类必须实现其中所有的抽象方法,而已实现方法的参数,返回值要和抽象类中的方法一样。否则,该类也要声明为抽象类。

多态

同一种事物,在不同时刻表现不同的状态

多态存在的三个必要条件

要有继承(包括接口的实现)(前提条件)

要有重写

父类引用指向子类对象(编译期是父类 运行期是子类)

简单来说是编译看左边,运行看右边

如果是对静态方法,成员变量的调用

编译和运行都看左边

方法参数多态性

final关键字:

用于声明属性,方法和类

属性:定义就必须赋值或者在构造方法中进行赋值,并且后期都不能修改

方法:子类不能重写

类:不能被定义成抽象类或接口,不可被继承

在方法参数前面加final关键字,为了防止数据在方法体中被修改

接口:

接口存在的意义:java中一个类只能有一个父类,所以接口可以实现多继承的逻辑

接口是一种特殊的抽象类,这种抽象类中包含抽象方法

所有属性默认为:public static final

抽象方法:public abstract

jdk8之后添加静态方法,接口可以直接调用

jdk8之后添加默认方法,通过子类调用

谈谈对面向对象的理解

我觉得面向对象最大的理解就是低耦合!在面向过程中更注重的是因果关系,有了A,才有B,有了B才有C。这样有个问题,当B出现问题。那么整个程序都会受到影响。因为它是一种因果关系。而面向对象则是将一个程序差分成多个块。这些块最终共同协作完成了程序!比如A是一个块,B是一个块,C是一个块。最终一起协同完成工作!当B这个快出现问题时。A和C是不受影响的。我们只需要专门针对B进行维护。或者说每个快都是可插拔的。我们随时可以将B换成D,或者其他的都是可以的。这就是我对面向对象的理解!它是一种低耦合的开发思想!

面向对象的概念和应用已经超越了程序设计、软件开发领域,现在已经发展到了各个领域

面向对象可以说是对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段的产物

它的特点:抽象 封装 继承 多态

用我的话说,其实可以这么理解,假如我是上帝,我要造 人 (这是对象)。

首先,我要知道人类要有哪些最基本的东西 ?

人要有思想,人还要有肉体

这个过程呢就是(抽象)

因为人的数量很庞大,所以我需要找别人帮我一起造人,但是我不想让他知道我造人的技术(人的脸需要用多少克泥巴,需要怎么用手去捏鼻子等等),我可以把我的造人的技术封装起来,别人只需要知道他要做什么样的人类就好了。【封装】

当我自己造人的时候,我可能造着造着就累了,我可能就要用我之前造出来的某个泥人作为模板“复制”,“粘贴”了

用模板创出来的泥人具有模板的特征,就像孩子一样具有父母的性状。我们称这个过程为【继承】

但是呢 好多泥人都是我后来偷懒用模板复制出来的,为了让人类更丰富多彩一些,我对他们又进行了改变。这个过程可以叫【多态】

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值