Class

2022/5/31 23:19:52

本文主要是介绍Class,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

类的声明

使用关键字extends用于继承类,使用关键字implements用于实现接口

class MyClass extends MySuperClass implements MyInterfaces1, MyInterface2 {
    // fields, constructors, and 
    // method declarations
}

类还可以使用修饰符public, private, protected, 但是private只能用于嵌套类


方法的重载

Java通过方法的签名(signatures)来区分类中不同的方法,因此可以声明同样名字的方法(只要它们的参数类型及个数不同即可),即重载(overload)

方法的签名 = 方法名 + 方法的参数。 返回值类型不是签名的一部分!

⚠️ 方法被重载时,编译器依据传入的参数个数及类型来确定具体哪个方法被调用


构造函数

自定义类可以不提供构造函数,但是如果该自定义类存在子类的,必须至少提供一个默认的无参的构造函数

当子类没有声明构造函数的时候,编译器会默认调用其父类的默认的无参的构造函数。如果父类中不存在该无参构造函数,那就会有编译错误


初始化块

一个类可以有多个静态初始化块,编译器按照静态初始化块的顺序执行。

Java编译器会将实例初始化块放入每一个构造函数,因此这种方法可以在多个构造函数之间共享代码

class InitializationBlock {
	/* 静态初始化块 */
    static {
    	/* 初始化静态变量 */
    }
    /* 实例初始化块 */
    {
        /* 初始化实例变量 */
    }
}

可变参数

可变参数(varargs)是指方法声明中用...声明的参数变量,它不限定参数的个数,使用起来时类似数组

public Polygon polygonFrom(Point... corners) {
	int numberOfObjects = corners.length;
    double squareOfSide, lengthOfSide;
    squareOfSide = ( corners[1].x - corners[0].x ) * ( corners[1].x - corners[0].x ) 
                 + ( corners[1].y - corners[0].y ) * ( corners[1].y - corners[0].y ) ;
    lengthOfSide = Math.sqrt(squareOfSide);
}

创建对象

虽然创建对象很简单,但是语句Point point = new Point(23, 40);里面有大文章

  • 声明: Point point声明了引用变量,其类型是Point;
  • 实例化:new关键字告诉编译器创建一个对象;
  • 初始化:new关键字后的是构造函数,告诉编译器用该构造函数初始化刚刚实例化的那个对象
  • 引用: 返回刚刚初始化完成的那个对象的内存地址给引用变量存储

访问修饰符

modifier Class Package SubClasss Global
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N


这篇关于Class的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程