JavaSE—05—类与对象

面向对象基础

面向对象(Object Oriented Programming)是以对象为中心,将对象的内部组织与外部环境区别开来,将表征对象的内部属性数据与外部隔离开来,其行为与属性构成了一个整体,而系统功能则表现为一系列对象之间的相互作用的序列,能更加形象的模拟或表达现实世界。

1.类与对象

类与对象是面向对象的核心概念

  • 类: 对现实生活中一类事物的描述,抽象的
  • 对象: 是实际存在的该类事物的每个个体,因而也称实例(instance),是一个实实在在的个体,具体的
  • 类是对象的设计模板

类的设计:

类的设计其实就是类的成员的设计,即事物的描述数据及其操作数据的行为方法等等的设计。

  • 数据描述:用属性表示,对应类中的成员变量

  • 行为描述:用方法表示,对应类中的成员方法

  • 其他都是为了数据和行为服务的:对应类中的其他成员

1.1类的定义格式

【修饰符】 class 类名{
    属性列表
    代码块
    构造器列表
    方法列表
    内部类
}

1.2对象的创建

new 类名();  //匿名对象

类名 对象名 = new 类名(); //有名对象

匿名对象:

不定义对象,而直接调用这个对象的方法等,这样的对象叫做匿名对象。

使用情况:

  • 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。

  • 可以匿名对象作为实参传递给一个方法调用。

2.类的成员:属性

2.1属性的声明

**声明位置:**类中方法外

【修饰符】 class 类名{
    【修饰符】 数据类型  属性名;    //属性有默认值
    【修饰符】 数据类型  属性名 = 值; //属性有初始值
}

说明:属性的类型可以是Java的任意类型,包括基本数据类型、引用数据类型(类、接口、数组等)

2.2属性的赋值

  1. 在声明属性时显式赋值
【修饰符】 class 类名{
    【修饰符】 数据类型  属性名 = 值; //属性有初始值
}
  1. 创建对象后赋值
【修饰符】 class 类名{
    【修饰符】 数据类型  属性名; //属性有默认值
}

//创建对象
类名 对象名 = new  类名();

//为对象的属性赋值
对象名.属性名 =;

2.3属性的访问机制

  1. 本类中

本类中的方法可以直接访问本类中的成员变量。
**特殊:**static成员访问非static成员,编译不通过

  1. 跨类

如果要访问其他类的成员,那么必须要通过“对象.成员”

用户使用new操作符创建一个对象后,可以使用“对象.成员”来获取对象的属性和行为。

2.4属性的特点

  1. 属性有默认值

在这里插入图片描述

  1. 每一个对象的属性是独立,互不干扰

2.5对象属性的内存图

class Student{
    String name;
    char gender = '男';//显式赋值
}

class TestStudent{
    public static void main(String[] args){
        Student s1 = new Student();
        System.out.println("姓名:" + s1.name);//null
        System.out.println("性别:" + s1.gender);//男
        
        s1.name = "小薇";
        s1.gender = '女';
        System.out.println("姓名:" + s1.name);//小薇
        System.out.println("性别:" + s1.gender);//女
        
        Student s2 = new Student();
        System.out.println("姓名:" + s2.name);//null
        System.out.println("性别:" + s2.gender);//男
    }
}

在这里插入图片描述

3.方法的参数传递机制

Java中方法的参数传递机制:值传递

  1. 形参是基本数据类型时,实参给形参传递数据值,是copy的形式,形参对值的修改不影响实参。
  2. 形参是引用数据类型时,实参给形参传递地址值,形参对对象的属性的修改,会影响实参对象的属性值,因为此时形参和实参就是指向同一个对象。

4.this关键字

1、this关键字:

意思:当前对象

(1)如果出现在构造器中:表示正在创建的对象

(2)如果出现在成员方法中:表示正在调用这个方法的对象

2、this的用法:

(1)this.属性

当局部变量与成员变量同名时,那么可以在成员变量的而前面加“this.”用于区别

如果没用this区分,则遵循就近原则。

(2)this.方法

调用当前对象的成员方法,完全可以省略“this.”

5. 实例变量与局部变量的区别

  • 声明的位置不同:实例变量在类中方法外,局部变量在方法内或代码块内
  • 数据的存储位置不同:实例变量在堆中,局部变量在栈中
  • 初始值的获得不同:实例变量有默认值,局部变量必须手动初始化
  • 修饰符:实例变量可以多种修饰符,局部变量最多只能使用final
  • 作用域:实例变量(本类中直接访问,其他类通过对象访问),局部变量从声明处开始,到所属的}就结束
  • 生命周期:实例变量随着对象的创建而出生,对象被垃圾回收机制收回才被收回。局部变量是当代码执行超过作用域范围,该局部变量就失效。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值