欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaSE—05—类与对象

程序员文章站 2022-04-05 19:04:41
...

面向对象基础

面向对象(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. 属性有默认值

JavaSE—05—类与对象

  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);//男
    }
}

JavaSE—05—类与对象

3.方法的参数传递机制

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

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

4.this关键字

1、this关键字:

意思:当前对象

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

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

2、this的用法:

(1)this.属性

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

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

(2)this.方法

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

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

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