面向对象概述 方法重载

tech2022-07-16  150

面向对象

面向对象思想

一切客观存在的事务都是对象,万物皆对象任何对象,一定具有自己的特征和行为

特征

称为属性,一般为名词,代表对象有什么

行为

称为方法,一般为动词,代表对象能做什么

生活中面向对象

面向过程: 自己是执行者的身份

面向对象:找一个对象帮你处理任务

技术中面向对象

现实中的对象对象多数来自于模板,程序中的对象也应有模板

面向对象中的类和对象的概念

类:一类事物的抽象 例如:水果类 老师类

对象:一类事物中的具体的实例(个体) 菠萝 老李

面向对象的编程设计:(先抽象–类,后具体—对象)

创建一个类,类中有属性和方法;实例化一个对象,通过对象调属性和方法

抽取

在一组相同或类似的对象中,抽取共性的特征和行为,保留所关注的部分

例如:通过对狗的抽取可取得以下共性

定义

属性

通过变量表示,又称实例变量

语法 数据类型 属性名;

位置 类的内部 方法的外部;

public class Dog{ String breed; //品种 int age; //年龄 String sex; //性别 String color; //毛色 }

方法

通过方法表示,又称实例方法

语法 不再写static

public class Dog{ public void eat(){ } public void sleep(){ } }

对象的创建

通过new关键字进行对象的创建实例化

public class TestCat { public static void main(String[] args) { //通过类,来创建对象/实例 并赋予属性 Cat cat1 = new Cat("啾啾","母",2,"白色","布偶猫"); System.out.println("这是一只"+cat1.color+"叫"+cat1.name+"的"+cat1.age+"岁"+cat1.color+cat1.type); //猫的行为 cat1.cry(); cat1.play(); cat1.action(); } }

类和对象的关系

类:定义了对象应有的特征和行为,类是对象的模板

对象:拥有多个特征和行为的实体,对象是类的实例

实例变量

默认值

整数:0小数:0.0字符:空格布尔:false其他:null

实例变量vs局部变量

实例方法

对象的实例方法包含两部分:方法的声明和方法的实现

方法声明

代表对象能做什么组成:修饰符 返回值类型 方法名(形参列表)

方法的实现

代表对象怎么做:即如何实现对应的功能组成:逻辑代码

方法重载

在某些情况下 对象的同一种行为可能存在多种实现过程

重载:一个类中定义多个相同的方法

要求:

方法名相同参数列表不同(类型、个数、顺序)与访问修饰符、返回值类型无关

调用带有重载的方法时,需要根据传入的实参去找与之匹配的方法

好处:灵活、方便、屏蔽使用差异

构造方法

构造方法:类中的特殊方法,主要用于创建对象

特点:

名称与类名完全相同没有返回值类型创建对象时,触发构造方法的调用,不可通过句点手动调用

注意:如果没有在类中显示定义构造方法,则编译器默认提供无参构造方法

对象创建过程

内存中开辟对象空间为各个属性赋予初始值执行构造方法中的代码[将对象的地址赋值给变量]

对象的内存分配

存储对象的变量中保存对象的地址,通过变量中的地址访问对象的属性和方法

构造方法重载

构造方法的重载也遵循重载规则

默认构造方法

在类中,如果没有定义构造方法,则编辑器默认提供无参构造方法如果手动添加有参构造方法,则无参构造方法不再提供,可根据需求自动添加

构造方法为属性赋值

创建对象的同时,将值传入构造方法由构造方法为各个属性赋值

this关键字

类时模板,可服务与此类的所有对象,this时类中的默认引用,代表当前实例,此类服务某个对象时,this指向这个对象

使用方法

调用实例属性 实例方法 如:this.name;this.sayHi()调用本类中的其他构造方法。如:this()、this(实参)

方法值传递

基本数据类型的变量中直接存放数据值本身,所以改的时候改的是数据值本身

引用类型不同的地方在于真正的数据并没有在栈区的变量中保存,而是在堆区里面保存着,所以虽然也拷贝了一份,也是副本,但是二者指向的是同一块堆区。

当使用基本数据类型作为方法的形参时,在方法体中对形参的修改不会影响到实参的数值

当使用引用数据类型作为方法的形参时,若在方法体中修改形参指向的数据内容,则会实参变量的数值产生影响,因为形参变量和实参变量共享同一块堆区;

当使用引用数据类型作为方法的形参时,若在方法体中修改形参变量的指向,此时不会对实参变量的数值产生影响,因此形参变量和实参变量分别指向不同的堆区;

最新回复(0)