Java 入门 (七)

构造方法

用来给类的成员进行初始化。

这个构造方法会在我们创建对象的时候被虚拟机调用,等对象创建好之后,类种的成员也完成了初始化

修饰符 返回值类型 方法名(参数列表){
    方法内容;
    return 返回值内容;
}
public 类名(参数类别){
    方法内容;
    return 返回值内容;
}

格式

  • 构造方法的修饰符一般为public(特殊的时候使用private)
  • 构造方法没有返回值,void都没有
  • 构造方法的方法名一定要和类名保持一致(大小写也要一致)
  • 构造方法可以有参数,也可以没有参数
  • 构造方法没有返回值,所以return可以不写,如果要写就写成return;

注意事项

  • 构造方法不用我们自己调用。他会在创建对象时候被jvm自动调用
  • 构造方法可以有参也可以无参
  • 如果无参构造方法,只能用此无参构造方法创建对象,赋值操作需要借助set方法赋值
  • 如果使用带参赋值方法,那么就可以使用此带参构造方法创建对象,同时带上赋值操作。
  • 构造方法默认带有一个无参构造方法
  • 如果自己定义一个构造方法(可以带参数也可以不带参数),那么会将系统默认带有无参构造方法给覆盖掉。
  • 构造方法可以进行重载(一般来说无参数和有参数的都要写上)

this和构造方法之间的关系

可以通过this调用构造方法

this(); 调用无参构造方法

this(...); 调用无参构造方法

类中的成员方法

  • 带参数和不带参数的

  • ```java
    public void setName(String name){
    this.name=name;
    }

- ```java
public String getName(){
    return name;
}
  • 有返回值和无返回值

  • ```java
    public String getName(){
    return name;
    }

- ```java
public void setName(String name){
    this.name=name;
}

一个类的标准写法

  1. 成员变量
  2. 成员方法
  3. getXXX和setXXX
  4. 其它成员方法
  5. 构造方法
  6. 有参数或无参数

注意:有时候我们会写一个show方法来对类种的成员变量进行统一的输出

类中成员的初始化顺序

默认初始化--显示初始化--构造初始化

int a;
int a = 1;
public 方法名()//构造方法

static 关键字

可以修饰成员变量和成员方法,被修饰的成员为类所有对象共享

特点

  1. 随着类的加载而加载
  2. 优先于对象而存在
  3. 被类的所有的对象所共享
  4. 被静态static修饰的变量可以通过对象名.变量名进行访问,更建议使用类名.变量名访问。

静态注意事项

  1. 静态方法不可以访问非静态的变量
  2. 被静态修饰的方法是随着类的加载而加载,是优先于对象而存在的,但是我们又知道成员变量是跟着对象存在的,所以一个先初始化的方法是不能访问一个后初始化好的一个变量的,要不然就会发生逻辑上的错误。
  3. 静态的方法可以访问非静态的方法吗? 不可以。被静态修饰的方法是随着类的加载而加载,是优先于对象而存在的,如果静态的方法可以访问非静态的方法(注意:非静态的方法可以访问非静态的变量的),那就相当于静态的方法可以访问非静态的变量,所以也是错误的

注意:静态只能访问静态

成员变量和静态变量之间的区别

调用方式 概念上 内存上 声明周期
成员变量 对象名.成员变量名 跟着对象混的 堆 对象创建而存在,对象销毁而消失
静态变量 对象名.静态变量名;类名.静态变量名 跟着类混的 方法去中的静态区 类创建而存在,类销毁而消失

工具类

把对某一类进行操作的方法都在同一个类中,并且这些方法都是静态的,方便以后直接通过类名调用。这种类称为工具类

帮助文档

需要用到的文档注释
/** 文档注释内容 */
常见注解:
    @author 作者
    @version 版本
    @since 从什么版本开始的
    @param 参数
    @return 返回值
    @throws 抛出了什么异常

生成

  • eclipse

    • File -- Export--java--Javadoc--finish
    • Project --- Generate Javadoc
  • Javadoc

  javadoc -d ./目录 -author -version 类名(文件名).java
  ```

  ## 使用api

  > 1. 打开之后找到index搜索框,然后输入想要查找到类或接口
  > 2. 看是属于哪个包下的,如果是lang下的,不用导包就能用。
  > 3. 看这个类或接口的简单介绍以及是从哪个版本开始的
  > 4. 看有无构造方法
  >    1. 如果有,那么就可以通过构造方法创建对象
  >    2. 如果没有,那么久看这个类中的方法是否全是静态的
  > 5. 看它的方法
  >    1. 先看左边是否被static修饰,以及是否有返回值类型
  >    2. 看方法右边,看方法的名字,以及方法的参数

# Arrays工具类

```java
static int binarySearch(int[] array, int key);
static void sort(int[] a);
static String toString(int[] a);

继承

以上这些类,我们都需要定义姓名、年龄等成员变量,这些都是重复性的内容,我们可以将这些重复性的内容(姓名、年龄)抽取出来定义在一个共有类中,这些类和这个共有的类通过特殊的关键字进行联系,然后这些不需要定义以上重复性的内容,而可以使用这些内容,这种行为被我们称为继承。

//关键字:extends
class 父类{

}
class 子类 extends 父类{

}
//被继承的类一般称为父类,基类
//继承的类一般称为子类、派生类

注意事项

父类的私有成员不能被继承

父类的构造方法不能被继承

​ 继承的是相同的内容,而父类构造方法名和父类类名一致,子类的构造方法名和子类类名一致,所以不能继承。

​ 构造方法就是为了对类完成初始化,子类的内容一定不会比父类的少

特点

java中的类只能单继承

java中的类不能多继承

java中的类可以多层继承(java的继承体系)

super

可以类比this来理解

this:哪个对象调用方法,方法中的this就代表哪个对象

super:继承关系中,指代父类的地址,可以理解为父类的对象,但并不是对象,而是地址

区别

访问成员变量 访问成员方法 访问构造方法
this 可以访问子类的成员变量,也可以访问父类的成员变量 可以访问子类的成员方法,也可以访问父类的成员方法 this() 访问子类的无参构造方法this(...)访问子类的带参构造方法
super 只能访问父类的成员变量 只能访问父类的成员方法 super():访问父类的无参数构造方法。super(...):访问父类的带参构造方法

访问构造方法:因为子类可以使用父类的成员,所以父类的初始化肯定要在子类之前。子类创建对象的时候,会调用父类的无参的构造方法。完成对父类的初始化。

注意事项:

super和this只能放在构造方法的第一行

super和this不能共存

子类的构造方法的第一行默认都有super(),用来访问父类的无参构造方法。但是你可以加上super(**)嗷来调用带参的父类方法啊

评论 0

还没有评论,来说点什么吧。

提交后需要审核才会公开。