3.2Java的类(Class)、成员(Member)、构造器(Constructor)、对象(Object)

1.类声明(Class Declaration)

类是引用数据类型。类有两种类声明:普通类声明(normal class)和枚举(enum)声明。

{ClassModifier} class TypeIdentifier
{ClassModifier} enum TypeIdentifier

Java 类名的命名规则如下:

  1. 类名应该以下划线(_)或字母开头,最好以字母开头。
  2. 第一个字母最好大写,如果类名由多个单词组成,则每个单词的首字母最好都大写。
  3. 类名不能为 Java 中的关键字,例如 boolean、this、int 等。
  4. 类名不能包含任何嵌入的空格或点号以及除了下划线(_)和美元符号($)字符之外的特殊字符。

2.类修饰符(Class Modifier)

public protected private
abstract static final strictfp
  • public:访问修饰符public仅适用于顶层类(top level classes)和成员类(member classes),而不是本地类(local classes)或匿名类(anonymous classes)。访问修饰符protectedprivate仅与直接封闭的类声明中的成员类有关。
  • abstract:如果类被 abstract 修饰,则该类为抽象类,抽象类不能被实例化,但抽象类中可以有抽象方法(使用 abstract 修饰的方法)和具体方法(没有使用 abstract 修饰的方法)。继承该抽象类的所有子类都必须实现该抽象类中的所有抽象方法(除非子类也是抽象类)。
  • static:修饰符static仅适用于成员类,不适用于顶级或本地或匿名类。
  • final:如果类被 final 修饰,则不允许被继承。
  • strictfp:使所有floatdouble 表达式类的声明(包括变量初始化,初始化实例,静态初始化和构造函数内)都严格遵守FP-strict的限制。

3.成员字段修饰符(Field Modifier)

public protected private
static final transient volatile
  • public、protected、private:用于表示成员变量的访问权限。
  • static:表示该成员变量为类变量,也称为静态变量。
  • final:表示将该成员变量声明为常量,其值无法更改。
  • transient:指示变量不是对象持久状态的一部分。
  •  volatile:Java内存模型可确保所有线程看到该变量的一致值。

可以在声明成员变量的同时对其进行初始化,如果声明成员变量时没有对其初始化,则系统会使用默认值初始化成员变量。

4.成员方法修饰符(Method Modifier)

public protected private
abstract static final synchronized native strictfp
  • public、private、protected:表示成员方法的访问权限。
  • abstract:表示限定该成员方法为抽象方法。抽象方法不提供具体的实现,并且所属类型必须为抽象类。
  • static:表示限定该成员方法为静态方法。
  • final:表示限定该成员方法不能被重写或重载。
  • synchronized:在执行之前需要先获取一个监视器。
  • native:方法可以用平台相关的另外一种编程语言编写。
  • strictfp:使所有方法体中的floatdouble 表达式都严格遵守FP-strict的限制。

5.构造器修饰符(Constructor Modifier)

public protected private

public、private、protected:表示构造器的访问权限。

6.对象(Object)

类名 对象名 = new 类名(); //创建对象
对象名.属性(又名:成员变量)    // 访问对象的属性
对象名.行为(又名:成员方法)()    // 访问对象的方法

在 Java 中,要引用对象的属性和行为,需要使用点(.)操作符来访问。对象名在圆点左边,而成员变量或成员方法的名称在圆点的右边。

7.this关键字

在实例方法或构造函数中,this是对当前对象的引用,该对象是正在调用其方法或构造函数的对象。

情况一:this与field(字段)

Point 类源代码

public class Point {
    public int x = 0;
    public int y = 0;
        
    //constructor
    public Point(int a, int b) {
        x = a;
        y = b;
    }
}

this关键字改写后:

public class Point {
    public int x = 0;
    public int y = 0;
        
    //constructor
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

情况二:this与Constructor(构造)

在构造函数中,您还可以使用this关键字来调用同一类中的另一个构造函数。这样做称为显式构造函数调用

public class Rectangle {
    private int x, y;
    private int width, height;
        
    public Rectangle() {
        this(0, 0, 1, 1);
    }
    public Rectangle(int width, int height) {
        this(0, 0, width, height);
    }
    public Rectangle(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }
    ...
}

8.instanceof关键字

在 Java 中可以使用 instanceof 关键字判断一个对象是否为一个类(或接口、抽象类、父类)的实例,语法格式如下所示:

boolean result = obj instanceof Class

其中,obj 是一个对象,Class 表示一个类或接口。obj 是 class 类(或接口)的实例或者子类实例时,结果 result 返回 true,否则返回 false。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/basic/java/2484.html

发表评论

登录后才能评论