day04

面向对象

​ 面向过程:当需要实现某一个功能时,每一个步骤都亲力亲为,都参与,注重过程

​ 面向对象:当需要实现某一个功能时,不关心步骤,只注重结果

​ 面向对象程序设计(oop)是一种基于对象概念的软件开发方法

​ 面向对象的三大特征:1.封装;2.继承;3.多态

类与对象的关系:

​ 类是对象的模板,对象是类的具体实例

​ 类简单的理解就是代表多个对象的统称,而不是具体的个体

方法:

​ 方法声明:[修饰符] 返回值类型 方法名([参数列表]){ //方法头

​ //方法体

​ }

​ 方法是完成特定功能的、相对独立的程序段

​ 方法的设计要遵循功能单一原则,即一个方法只干一件事

​ 可以多次调用方法

​ 方法如果没有返回值,就使用void关键字声明方法,有返回值就用返回值的类型声明,一个方法只能有一个返回值(return + 返回值;)

​ 参数列表表示执行/调用此方法需不需要传递参数,没有参数列表叫做无参方法,参数之间用, 号隔开

​ 在传参过程中,基本数据类型传递的是值(值传递),引用数据类型传递的是地址(在Java中只有值传递)

​ 方法的参数叫做形参,调用方法传递的对应的参数叫做实参

​ 方法体里面不能声明另一个方法

修饰符

​ 【】表示可有可无

​ 一个java文件里面只能有一个public类

​ 修饰符:public/private/pritected/final/static

​ 访问修饰符:public/private/pritected

可变参:

​ 可变参的作用和数组是一样的

​ 不能同时存在两个同名方法且参数列表一个是数组,一个是可变参的类

​ 可变参只能出现在参数列表的最后一位,不能再参数列表中出现多个可变参

方法的重载

​ 一个类中允许出现方法名相同,参数个数、类型、顺序不同(参数列表不一样)的方法存在,这就是方法的重载

​ 方法的重载与返回值无关

​ 在重载中,调用哪个方法由参数列表决定,如果出现可变参与参数列表都符合要求的情况,调用精度最高的方法(即不是可变参的方法)

​ 方法重载在调用时,根据实参与形参在类型、个数、顺序一一匹配的规则调用

实例变量:

​ 定义在类的内部,方法外部的变量,也称为属性

作用域

​ 实例变量的作用域是整个类,在这个类的所有实例方法中都可以访问。

​ 实例变量可以在定义 的时候不初始化值,因为实例变量在实例化对象后会有默认值,默认值根据实例变量的类型决定。

​ 局部变量的作用域仅限定于定义它的方法

​ 局部变量没有默认值,必须初始化

​ 在同一个方法中不允许有同名的局部变量,在不同的方法中可以有同名的局部变量

​ 在一个类中,局部变量可以和实例变量同名,但在使用时局部变量优先被使用

构造方法

​ 定义:

​ [访问修饰符] 方法名([参数列表]){

​ //方法体

​ }

​ 构造方法是一个特殊的方法

​ 构造方法没有返回值,也不是void

​ 默认构造方法没有参数

​ 构造方法的方法名必须与类型相同,包括大小写

​ 构造方法分为有参构造和无参构造(默认构造),它们之间是重载关系。

​ 如果不自定义构造方法,那么 Java 会自动给类写一个 public 无参构造。如果声明了构造方法 (不管是否有参数) Java 都不会再给这个类生成无参构造了

static方法

​ 使用static修饰的方法就叫static(静态)方法,它属于类,也叫类方法

​ 可以使用 类名.方法名 直接调用static方法(推荐使用这个)

​ 也可以使用 对象.方法名调用(不推荐使用这个,用这种方式会被鄙视)

​ static 方法在类被加载的时候就加载了(并不意味着要执行),而且只加载一次

​ static 初始化和实例初始化类似,作用是初始化 static 变量。只在类第一次加载的时候执行

实例方法和static方法

                    都属于成员方法

​ 实例方法在对象初始化的时候加载

​ 由于 static 方法比实例方法的声明周期长,所以在一个类中实例方法可以直接调用 static方法,而 static 方法不能直接调用实例方法

​ static 方法中不能够使用实例变量,而实例方法可以

​ static 方法中不能够使用 this

this

​ 哪个对象的 this 就代表当前对象,也就是说 谁调用就是谁

​ this 其实是一个引用,对自身的一个引用。所以 this 能调用实例变量、实例方法、构造方法、类变 量、类方法。不能调用局部变量

​ 不推荐使用 this 来调用类变量或类方法。在本类中可以直接调用类变量和类方法,在其他类中使用 类 名.类变量/类方法 调用

学习心得:

​ 说实话,再次之前,无论我学习什么语言,学到最后都停在了面向对象这里。所以面向对象这一部分的内容,对我来说,一直都很困难,内容十分的多,与杂。但这一次,我一定要学好面向对象的内容,把它理解透彻,熟练的掌握!

标签

评论


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1