面向对象概述 方法重载

面向对象

面向对象思想

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

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

行为

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

在这里插入图片描述

生活中面向对象

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

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

技术中面向对象

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

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

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

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

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

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

抽取

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

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

在这里插入图片描述

定义

属性

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

语法 数据类型 属性名;

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

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局部变量

在这里插入图片描述

实例方法

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

方法声明
  • 代表对象能做什么
  • 组成:修饰符 返回值类型 方法名(形参列表)
方法的实现
  • 代表对象怎么做:即如何实现对应的功能
  • 组成:逻辑代码

方法重载

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

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

要求:

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

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

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

构造方法

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

特点:

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

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

对象创建过程

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

对象的内存分配

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

构造方法重载

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

默认构造方法
  • 在类中,如果没有定义构造方法,则编辑器默认提供无参构造方法
  • 如果手动添加有参构造方法,则无参构造方法不再提供,可根据需求自动添加
构造方法为属性赋值
  1. 创建对象的同时,将值传入构造方法
  2. 由构造方法为各个属性赋值

this关键字

  • 类时模板,可服务与此类的所有对象,this时类中的默认引用,代表当前实例,此类服务某个对象时,this指向这个对象
使用方法
  1. 调用实例属性 实例方法 如:this.name;this.sayHi()
  2. 调用本类中的其他构造方法。如:this()、this(实参)

方法值传递

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值