Loading... # 构造方法 用来给类的成员进行初始化。 这个构造方法会在我们创建对象的时候被虚拟机调用,等对象创建好之后,类种的成员也完成了初始化 ```java 修饰符 返回值类型 方法名(参数列表){ 方法内容; return 返回值内容; } ``` ```java 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. 成员方法 1. getXXX和setXXX 2. 其它成员方法 3. 构造方法 1. 有参数或无参数 注意:有时候我们会写一个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 ```bash 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); ``` # 继承 以上这些类,我们都需要定义姓名、年龄等成员变量,这些都是重复性的内容,我们可以将这些重复性的内容(姓名、年龄)抽取出来定义在一个共有类中,这些类和这个共有的类通过特殊的关键字进行联系,然后这些不需要定义以上重复性的内容,而可以使用这些内容,这种行为被我们称为继承。 ```java //关键字: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(**)嗷来调用带参的父类方法啊 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏