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 来调用类变量或类方法。在本类中可以直接调用类变量和类方法,在其他类中使用 类 名.类变量/类方法 调用
学习心得:
说实话,再次之前,无论我学习什么语言,学到最后都停在了面向对象这里。所以面向对象这一部分的内容,对我来说,一直都很困难,内容十分的多,与杂。但这一次,我一定要学好面向对象的内容,把它理解透彻,熟练的掌握!
近期评论