类方法和类变量
类方法:
对象是行为(Java中用方法实现)和属性(Java中用成员变量实现)的组合。属性和对象本身有着相同的生命周期。在任何给定的时间点,对象有着特定的状态,状态是类的全部实例,变量
所组合而成的的快照。因为这个原因,有时候实例变量也被成为状态变量。
行为方法操作或者改变对象的属性。换句话说,行为方法可以改变对象的状态。查询方法返回对象状态的某个片段。
把方法设计成:要么改变类对象状态,要么返回信息。不要两件事多做。
有时候您发现某个方法接受参数,只对这些参数进行处理,然后返回一个值。该方法需要操作对象的状态。这样的方法叫做工具方法。有时候,工具方法在别的语言中被称之为函数。工具方法
是全局的,任何客户代码都可以访问他们。
例如createDate方法是DateUtil中唯一的方法,每个DateUtil实例都是这个方法且没有其他不同的操作,是工具方法(即产生时间)所以没有必要创建DateUtil实例。
/**
*
* @param year 年
* @param month 月份
* @param date 月中的天数
* @return 返回一个根据参数year,month,date组成的日期实例
*/
public static Date createDate(int year,int month,int date){
GregorianCalendar calendar = new GregorianCalendar();
calendar.clear();
calendar.set(Calendar.YEAR, year-1900);
calendar.set(Calendar.MONTH, month-1);
calendar.set(Calendar.DAY_OF_MONTH, date);
return calendar.getTime();
}
类变量:
除了从同一个类中的其它类方法中调用某个类方法,从任何其它地方调用这个类方法,都必须在类方法的前面加上类名作为限定。
关于初始化的东西
对于一个普通类,在定义它的时候必须给出初始化的操作,初始化可以在构造函数中完成,可以在类的属性声明是完成。
例如:
public class Student {
private String name;
static final String IN_STATE = "CO";
private String state = ""; //在属性声明时初始化变量。
public Student() {
this.name = ""; //在构造方法中完成初始化。
}
public Student(String name) {
this.name = name;
}
String getName(){
return name;
}
}
如果没有初始化实例对象,有可能出现这个异常:
java.lang.NullPointerException
at.studentinfo.Student.isInState(Student.java:37)
........
对于这个异常,大家一定见得特别多,而往往由于对象实例没有初始化,造成这个异常比比皆是。
我建议对象实例在创建时就给出初始化,而不是通过各种操作完成实例变量的赋值。(对于这个大家可以各抒己见,欢迎拍砖)。
下一次探讨接口,我会继续的 ,多谢大家的支持。
分享到:
相关推荐
本话题将深入探讨Agile Java中的类方法和类变量,这些是面向对象编程的基础概念,对于理解和编写高质量的Java代码至关重要。 类方法和类变量是Java类的核心组成部分。在Java中,类是创建对象的蓝图,它定义了对象的...
Java 类变量和方法是编程语言Java的核心组成部分,它们定义了类的行为和属性。在这个文档中,我们将深入探讨这些概念。 首先,我们来看类的修饰符。在Java中,类可以被`public`、`abstract`或`final`修饰。`public`...
- **Static**:静态的,用于声明静态变量和方法。 变量的声明可以分为可访问修饰符、静态、常量和 volatile: 1. **可访问修饰符**(如 public, private, protected)决定了变量的可见范围。 2. **Static**:声明...
成员对象可以直接访问所属类的所有公有(public)和保护(protected)成员,包括方法和变量。 当我们有两个类A和B,且它们需要互相调用对方的成员时,通常会遇到两个主要问题:前置声明(Forward Declaration)和...
### 类变量与实例变量 ...类变量和实例变量虽然都是用来表示对象状态的信息,但它们的生命周期、存储位置以及访问方式都有所不同。正确地理解和使用这两种变量能够帮助开发者更高效地设计和实现面向对象的程序。
在C++编程语言中,全局变量是在程序的任何作用域之外声明的变量,可以在程序的多个函数或类中被...在设计C++程序时,应优先考虑使用局部变量、类成员变量以及函数参数来传递和管理数据,以提高代码的可读性和可维护性。
本篇文章将深入探讨`final`关键字在类、方法和变量中的应用,以及它们对程序设计的影响。 首先,让我们了解`final`关键字在类中的使用。当一个类被声明为`final`时,这意味着它不能被继承。这意味着这个类是封闭的...
通常,推荐使用局部变量和实例/类变量来代替全局变量。 ```ruby $global_var = "Greetings, Global!" puts $global_var # 输出 "Greetings, Global!" ``` 三、实例变量 实例变量以`@`开头,它们是对象的私有属性...
在上述代码中,我们定义了一个名为`ChangeValue`的类,该类包含一个私有字符串变量`myValue`和两个公共方法:构造函数和`WriteLine`方法。`Test`类中的`Main`方法则演示了如何使用反射来修改`ChangeValue`类实例中的...
直接调用类方法量:class::attribute/function,无论是静态/非静态都可以,静态static:声明类成员或方法为 static,就可以不实例化类而直接访问,不能通过一个对象来访问其中的静态成员(静态方法除外),静态成员属于类,不...
在Ruby语言中,类实例变量、类实例方法与类变量和类方法是构成面向对象编程模型的重要组成部分。它们各自有不同的用途和行为特性,下面详细介绍这些概念的区别以及它们的使用场景。 首先,类实例变量和类实例方法都...
综上所述,理解和掌握C++类变量的声明和使用是成为熟练C++程序员的关键步骤之一,同时了解它与Java等其他语言的区别,有助于拓宽编程视野,提高跨语言开发能力。在实际编程中,应根据项目需求和团队规范选择合适的...
// 不需要实例化类就能访问静态变量和方法 Console.WriteLine(MyClass.StaticVar); // 输出10 MyClass.ModifyStaticVar(); Console.WriteLine(MyClass.StaticVar); // 输出11 ``` 在实际编程中,正确选择变量的访问...
在Java编程中,反射是一个非常强大的工具,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够创建和操作对象。本文将详细介绍如何使用Java反射技术来获取内部类中的静态成员变量的值。 #### 二、背景...
关键字 static 修饰的称为类方法(又称静态方法)和类变量(又称静态变量),而没有 static 修饰的称为实例方法和实例变量。实例方法和实例变量只能通过对象名引用,而类方法和类变量既能通过对象名引用,也能通过...
在PHP编程语言中,类是面向对象编程的基本组成部分之一,而成员变量与方法则是构成类的重要元素。...通过合理地控制成员变量和方法的访问权限,不仅可以提升代码的安全性,还能促进更好的封装性和模块化设计。
Java中的`static`关键字在Java编程中扮演着重要的角色,主要涉及到类方法、类变量以及继承和重写的概念。下面将详细阐述这些知识点。 1. 类方法(静态方法): 当一个方法被声明为`static`时,它就成为类方法。这...
在一个静态方法中,除了局部变量外,能够访问的外部变量也必须是静态的,能够访问的外部方法也必须是静态的,实例变量和实例方法均不能访问。 静态方法通常是 public 的,作为工具类的工具方法出现。 例如: ```...
在Java编程语言中,类作为成员变量是一种常见的设计模式,它允许我们将一个对象实例嵌套在另一个类的内部,以此来实现数据封装和模块化。这种做法有助于组织代码,提高可读性和可维护性。下面将详细介绍如何在Java中...
变量和方法覆盖和隐藏的不同:一个类的实例无法通过使用全局名或者强制自己转换为父类型,以访问父类中被隐藏的方法,然而强制转换子类为父类型之后,可以访问父类中被隐藏的变量。另外静态方法不能覆盖父类的实例...