• 【Java面向对象】对象和类


    1.为对象定义类

    面向对象程序设计(OOP) 就是使用对象进行程序设计。对象 (object) 代表现实世界中可以明确标识的一个实体。

    • 一个对象的状态 (state, 也称为特征 (property) 或属性 (attribute)) 是由数据域及其当前值来表示的。
    • 一个对象的行为 (behavior, 也称为动作 ( action)) 是由方法定义的。调用对象的一个方法就是要求对象完成一个动作。

    使用一个通用类来定义同一类型的对象。
    类是一个模板、蓝本或者合约,用来定义对象的数据域以及方法。
    对象是类的实例。可以从一个类中创建多个实例。
    创建实例的过程称为实例化 对象 (object) 和实例 (instance) 经常是可以互换的。类和对象之间
    的关系类似于苹果派配方和苹果派之间的关系。

    Java 类使用变量定义数据域,使用方法定义动作。除此之外,类还提供了一种称为构造方法 ( constructor) 的特殊类型的方法,调用它可以创建一个新对象。构造方法本身是可以完成任何动作的,但是设计构造方法是为了完成初始化动作,例如初始化对象的数据域。

    将包含 main 方法的类称为主类 (main class)。

    2.定义类

    public class Test{
    	public static void main(String args){
    		Circle c1 = new Circle();
    		Circle c2 = new Circle(1.0);
    		System.out.println(c2.getRadius());
    	}
    }
    
    class Circle{
    	//属性
    	double radius;
    	//方法
    	Circle(){radius = 1;}
    	Circle(double a){radius = a;}
    	double getRadius(){
    		return radius;
    	}
    }
    

    也可以把Test和Circle放一起

    public class Circle{
    	public static void main(String args){
    		Circle c1 = new Circle();
    		Circle c2 = new Circle(1.0);
    		System.out.println(c2.getRadius());
    	}
    	//属性
    	double radius;
    	//方法
    	Circle(){radius = 1;}
    	Circle(double a){radius = a;}
    	double getRadius(){
    		return radius;
    	}
    }
    

    2.1 主类

    文件中只能有一个类是公共( public)类。公共类必须与文件同名。
    主类包含 main 方法,运行这个程序时,Java 运行时系统会调用主类中的 main 方法。
    使用类的程序通常称为该类的客户( client)。

    3.类与对象

    3.1 构造方法

    • 构造方法必须和所在类名字相同。
    • 构造方法没有返回值类型,甚至连 void 也没有。
    • 构造方法是在创建一个对象时由 new 操作符调用的。构造方法的作用是初始化对象.
    • 构造方法可以重载

    通常,类会提供一个没有参数的构造方法 .这样的构造方法称为无参构造方 法 (no-arg 或 no-argument constructor) .
    在一个类中,用户可能没有定义构造方法。在这种情况下,类中会隐式定义一个方法体为空的无参构造方法。这个构造方法称为默认构造方法 (defaultconstructor), 当且仅当类中没有明确定义任何构造方法时才会自动提供。

    3.2 通过引用变量访问对象

    对象是通过对象引用变量 ( reference variable) 来访问的,该变量包含了对对象的引用。
    本质上来说,类是程序员定义的类型。类是一种引用类型 (referencetype), 这意味着该类类型的变量都可以引用该类的一个实例。

    // 声明对象引用变量
    ClassName objectRefVar;
    
    // 创建一个对象
    new ClassName();
    
    // 声明对象引用变量、创建对象以及将对象的引用赋值给这个变量的语句
    C1assName objectRefVar = new ClassName() ;
    

    从表面上看,对象引用变量中似乎存放了一个对象,但事实上,它只是存放了对该对象的引用。严格地讲,对象引用变量和对象是不同的,但是大多数情况下,这种差异是可以忽略的。
    另外,在 Java 中,数组被看作对象。数组是用 new 操作符创 建的。一个数组变量实际上是一个包含数组引用的 变量。

    3.3 访问对象的数据和方法

    在面向对象编程中,对象成员指该对象的数据域和方法。在创建一个对象之后,它的数据访问和方法调用可以使用点操作符 ( .) 来进行,该操作符也称为对象成员访问操作符( object member access operator)

    objectRefVar.dataField // 引用对象的数据域
    objectRefVar .method(arguments); //调用对象的方法
    

    之前的数据域 radius 称作实例变量 ( instance variable), 因为它依赖于某个具体的实例。基于同样的原因. getArea 方法称为实例方法 (instance method), 因为只能在具体的实例上调用它。实例方法被调用的对象称为调用对象 (calling object)

    3.4 引用数据域和 null 值

    数据域也可能是引用型的。

    class Student{
    	String name;
    }
    

    String 是一个预定义的 Java 类。

    如果一个引用类型的数据域没有引用任何对象,那么这个数据域就有一个特殊的 Java值 null。null 同 true 和 false —样都是字面值。true 和 false 是 boolean 类型字面值,而null 是引用类型字面值。

    引用类型数据域的默认值是 null, 数值类型数据域的默认值是 0, boolean 类型数据域的默认值是 false, 而 char 类型数据域的默认值是 1\u0000
    但是,Java 没有给方法中的局部变量赋默认值

    3.5 基本类型变量和引用类型变量的区别

    每个变量都代表一个保存了存储值的内存位置。声明一个变量时,就是在告诉编译器这个变量可以存放什么类型的值。

    • 对基本类型变量来说,对应内存所存储的值是基本类型值
    • 对引用类型变量来说,对应内存所存储的值是一个引用,是对象的存储地址

    将一个变量赋值给另一个变量时,另一个变量就被赋予同样的值。

    • 对基本类型变量而言,就是将一个变量的实际值赋给另一个变量。
    • 对引用类型变量而言,就是将一个变量的引用赋给另一个变量。说白了就是,赋值之后就指向同一个对象了。

    指向对象的变量指向新的对象后,以前引用的对象就不再有用,因此,现在它就成为垃圾 (garbage)。垃圾会占 用内存空间。Java 运行系统会检测垃圾并自动回收它所占据的空间,这个过程称为垃圾回收
    (garbage collection )。
    可以显式地给该对象的引用变量赋 null 值。如果该对
    象没有被任何引 用 变量所引 用,Java 虚拟机将自动回收它所占据的空间。

    4.常见的类

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    hdc_std安装配置以及常用命令
    Vue2路由的详细讲解
    使用pytest和allure框架实现自动化测试报告优化
    微服务项目:尚融宝(43)(核心业务流程:借款额度审批(3))
    Linux监控
    html和css基础练习
    2、Linux中静态IP与动态IP的修改
    uboot启动流程涉及reset汇编函数
    java设计模式
    MongoDB ObjectId() 是如何实现的 “千万级” 分布式唯一 ID?
  • 原文地址:https://blog.csdn.net/wwl412095144/article/details/140442981