类的基础

Posted 乌龟王八蛋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类的基础相关的知识,希望对你有一定的参考价值。

类的组成

面向对象是一种编程思想,而 Java 的设计则很好的诠释了这一概念

一个类由属性、方法两部分组成

  • 类变量:类本身具有的属性
  • 类方法:类本身具有的方法
  • 实例变量:类的对象具有的属性
  • 实例方法:类的对象具有的方法

类变量、实例变量可以统称 成员变量,而类变量也可以称作 静态变量、静态成员变量

类方法、实例方法可以统称 成员方法,而类方法也可以称作 静态方法、静态成员方法

简单理解为,类属性、类方法是类本身所具有的;实例属性、实例方法依赖于类的对象

类的组成部分 示例

public class Person {
	/* 类变量 */
	private static String name;
	/* 实例变量 */
	private Integer age;
	/* 类方法 */
	public static void eat(String food) {
	}
	/* 实例方法 */
	public void sing(String sing) {
	}
}

成员变量与局部变量

类的成员变量与方法的局部变量存在区别

书写位置:成员变量位于类中、方法体外;局部变量位于方法体、代码块中

内存位置:成员变量位于堆内存;局部变量位于栈内存

类型默认值:成员变量存在默认初始值;局部变量不存在

作用域:成员变量作用域整个类;局部变量只在方法体、代码块中有效

生命周期:成员变量自类、对象的创建到销毁;局部变量随着方法、代码块的执行完毕而释放

类的实例对象

类在实例化之后,可以得到该类的对象,称为 实例对象,实例化的关键字是 new

Animal animal = new Animal();

new 在堆内存中,为实例对象开辟 新的存储空间,需要格外注意

当一个类实例化之后,其中的实例变量、实例方法才可以被调用

而对于静态成员变量、方法,则无需类的实例化,区别在于关键字 static

static 声明的属性、方法,在类加载时创建,属于类本身,由所有实例对象共享

类在实例化以后,可以获得一个该类的对象,并操作其中的实例属性、实例方法

类的构造方法

在类中,存在一个特殊的方法,构造方法

构造方法存在以下几点

  • 构造方法名与类名保持一致
  • 构造方法不存在返回值,也不应该有返回值
  • Java默认提供无参的构造方法,若重载了有参构造,则不再提供
  • 构造方法可以私有化,应用于特定的场景

需要注意的一点,若重载了构造方法,必须手动声明无参构造

this 关键字

this 关键字指代当前实例对象,存在三种用法

  1. this. 属性名:指代当前的实例属性,见于构造方法的重载
  2. this. 方法名:指代当前的实例方法
  3. this():用于构造方法中,调用其它的构造方法,置于构造方法首行

static 关键字

static 关键字用于修饰类变量、类方法、代码块以及内部类,意为 静态

静态的属性、方法,在类加载时一并创建,优先级高于实例对象的属性、方法

  1. 简单的说,静态属性、方法不能访问非静态的属性、方法,反之则可以访问
  2. 静态的属性在类加载时即初始化,该类所有的实例对象则共享一份静态属性
  3. 静态代码块存在于类中,在类加载时执行,仅执行一次

简单的理解为,static 修饰的类属性优先创建,被多个实例对象所共享使用,数据唯一

以上是关于类的基础的主要内容,如果未能解决你的问题,请参考以下文章

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

这些角度电子邮件指令代码片段如何连接

Jekyll 偏移代码片段高亮的初始行

有条件地导入 python 类的片段

如何在片段类的列表视图中显示 SQLite 数据库?

如何将 View 类中的代码片段移动到 OnAppearing() 方法?