2.2Java类型之类(Class)

1.类定义

1.1类声明

class 类名 {
    //类体
}

1.2抽象类

抽象类支持直接被继承,如果子类未实现父抽象类的所有抽象方法,则子类也必须为抽象类,如果子类实现了父抽象类的所有抽象方法,则子类为具体类。

抽象类不支持直接被实例化。

抽象类非必须包含抽象方法,但包含抽象方法的类必须为抽象类。

abstract class A {
    abstract 返回类型 方法名(类型 形参名);
}

class B extends A {
    @Override
    返回类型 方法名(类型 形参名) {
        //方法体
    }
}

2.成员定义

注意:Java 语言不支持静态访问器属性、实例访问器属性。

class 类名 {
    //静态字段
    static int a = 1;
  
    //静态方法
    static void f1() {
    }

    //静态初始化块
    static {
    }

    //实例字段
    int b = 1;

    //实例方法
    void f2() {
    }

    //实例初始化块
    {
    }

    //构造方法
    类名(int b) {
        this.b = b;
    }
}

3.继承

3.1方法继承

一个子类只可以直接继承自一个父类,不可以直接继承自多个父类。

子类会直接继承父类中可继承的方法,间接继承祖父类中可继承的方法,以此类推,直至没有可继承的方法。

注意:从父类中继承过来的方法无需在子类中重新声明,否则会发生覆盖。

class 子类名 extends 父类名 {
    //子类体
}

3.2方法覆盖(Override)

如果从父类中继承过来的方法在子类中重新声明,则在子类中重新声明的方法会覆盖从父类中继承过来的方法。

方法签名包含:访问修饰符、返回类型、方法名、形参类型、形参类型的个数、形参类型的顺序。

注意:@Override 注解只支持实例方法,不支持静态方法。

注意:覆盖并不会影响父类中原来的方法。

public class C {
    public static void main(String[] args) {
        B b = new B();
        System.out.println(b.f());  // 2
    }
}

class B extends A {
    @Override
    int f() {
        return 2;
    }
}

class A {
    int f() {
        return 1;
    }
}

3.3super关键字

super 关键字用于在子类中调用父类的方法。

//调用父类的方法
super.静态方法名()
super.实例方法名()
//调用父类的构造方法
//不传递参数(注意:圆括号不可以省略)
super()
//传递指定参数
super(参数)

4.创建对象

4.1创建对象

//无实参
类名 对象名 = new 类名();

//有实参
类名 对象名 = new 类名(实参);

4.2方法重载(Overload)

方法签名包含:方法名、形参类型、形参类型的个数、形参类型的顺序,不包含:访问修饰符、返回类型。

4.3this关键字

this 关键字指向当前对象。

5.访问成员

//外部调用
类名.静态字段名
类名.静态方法名()
对象名.实例字段名
对象名.实例方法名()
//内部调用
//类上下文
[类名.]静态字段名
[类名.]静态方法名()
//实例上下文
this.实例字段名
this.实例方法名()

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

(0)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2025年5月2日 12:43
下一篇 2025年5月3日 03:56

相关推荐

  • 1.5Java语言的变量(Variable)

    1.变量声明 变量在赋值后可以通过重新赋值更改其值。 2.变量作用域 注意:Java 语言不支持全局变量。 3.变量引用表达式

    Java语言教程 2025年3月5日
    0180
  • 1.2Java语言的标识符(Identifier)

    1.标识符 标识符必须以字母(A~Z 和 a~z)、下划线(_)或 美元符号($)开头,后续可以是字母(A~Z 和 a~z)、数字(0~9)、下划线(_)或 美元符号($)。 注意:标识符区分大小写。 2.命名约定

    Java语言教程 2025年3月2日
    090
  • 2.4Java类型之字符串(String)

    1.双引号字符串字面量 双引号字符串字面量支持所有转义序列。 双引号字符串字面量不支持隐式的换行符。 2.访问字符串 注意:字符串类型是不可变的,支持查看字符,不支持添加、更改、删除字符。 3.字符串长度 4.字符串连接 可以使用加号 + 连接字符串。 5.转义序列 转义序列 描述 \ 忽略反斜杠与换行符 \\ 反斜杠…

    Java语言教程 2025年5月4日
    0140

发表回复

登录后才能评论