构造方法
用来给类的成员进行初始化。
这个构造方法会在我们创建对象的时候被虚拟机调用,等对象创建好之后,类种的成员也完成了初始化
修饰符 返回值类型 方法名(参数列表){
方法内容;
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;
}
一个类的标准写法
- 成员变量
- 成员方法
- getXXX和setXXX
- 其它成员方法
- 构造方法
- 有参数或无参数
注意:有时候我们会写一个show方法来对类种的成员变量进行统一的输出
类中成员的初始化顺序
默认初始化--显示初始化--构造初始化
int a;
int a = 1;
public 方法名()//构造方法
static 关键字
可以修饰成员变量和成员方法,被修饰的成员为类所有对象共享
特点
- 随着类的加载而加载
- 优先于对象而存在
- 被类的所有的对象所共享
- 被静态static修饰的变量可以通过对象名.变量名进行访问,更建议使用类名.变量名访问。
静态注意事项
- 静态方法不可以访问非静态的变量
- 被静态修饰的方法是随着类的加载而加载,是优先于对象而存在的,但是我们又知道成员变量是跟着对象存在的,所以一个先初始化的方法是不能访问一个后初始化好的一个变量的,要不然就会发生逻辑上的错误。
- 静态的方法可以访问非静态的方法吗? 不可以。被静态修饰的方法是随着类的加载而加载,是优先于对象而存在的,如果静态的方法可以访问非静态的方法(注意:非静态的方法可以访问非静态的变量的),那就相当于静态的方法可以访问非静态的变量,所以也是错误的
注意:静态只能访问静态
成员变量和静态变量之间的区别
调用方式 概念上 内存上 声明周期 成员变量 对象名.成员变量名 跟着对象混的 堆 对象创建而存在,对象销毁而消失 静态变量 对象名.静态变量名;类名.静态变量名 跟着类混的 方法去中的静态区 类创建而存在,类销毁而消失
工具类
把对某一类进行操作的方法都在同一个类中,并且这些方法都是静态的,方便以后直接通过类名调用。这种类称为工具类
帮助文档
需要用到的文档注释
/** 文档注释内容 */
常见注解:
@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
还没有评论,来说点什么吧。