构造方法
- 构造方法又被称为构造函数/构造器
- 构造方法语法结构:
【修饰符列表】 构造方法名(形式参数列表){
}
== 对于构造方法来说:返回值不需要指定,并且不能写void,如果写了为普通方法。并且构造方法得方法名必须和类名保持一致。每个构造方法调用后有返回值,但不需要写返回类型。其返回类型就是它本身。==
构造方法的作用:
主要用于在创建(构造)对象时初始化对象得数据成员。 - 调用方式:
与普通方法不同,构造方法采用:new 构造方法名(实参列表)。构造方法可以有多个,但是形参是不同的,即方法的重载。 - 在没有显式构造方法时,系统自动为该类生成一个默认的构造方法,每个类只有一个默认构造方法。
- Ctrl +/:单行注释。
- Ctrl + shift + /: 多行注释。
- 只要构造方法调用就会创建一个对象。
- 查看访问的是哪个方法,Ctrl+鼠标左键。
- Ctrl + O ,快速定位方法和属性。
this关键字
- this是指像当前对象本身的一个指针(引用)。
- 同一个类不同的对象有不同的this。
- this只能在类中(非静态使用)。
当一个行为/动作执行的过程中是需要对象参与的,那么这个方法一定要定义为“实例方法”,不要加“static"。static跟对象无缘。
this在多数情况下可以省略不写。 - 在大括号(实例方法)代码执行过程中一定存在”当前对象“,也就是说这里一定是有this
- 总结:this对应对象。
- 用来区分实例变量和局部变量时,this不能省略。
- 构造方法用于创造对象的初始化,get,set方法用于实例变量值的获取和更改。
- 重点:
- 以上为通过一个构造方法调用另一个构造方法需要注意的。
- this可以使用在实例方法中,代表当前对象。可以用在构造函数中,调用另一个构造函数(减少代码冗余)。
- 重点:this()这种语法只能出现构造函数第一行。
练习:
package package1;
public class Uers {
//有static方法
public static void method1(){
//调用dosome
//完整方式的调用
Uers.doSome();
//省略方式的调用
doSome();
//调用doOther
//完整方式的调用
Uers aa = new Uers ();
aa.doOther();
//省略方式的调用
//(no)
//访问1
//完整方式访问
System.out.println(aa.i);
//省略方式访问
//(no)
}
//没有static的方法
public void method2() {
//调用完整dosome
//完整方式的调用
Uers.doSome();
//省略方式的调用
doSome();
//调用doOther
//完整方式的调用
this.doOther();
//省略方式的调用
doOther();
//访问1
//完整方式访问
System.out.println(this.i);
//省略方式访问
System.out.println(i);
}
//主方法
public static void main(String[] args) {
//要求在这里编写程序调用method1
//使用完整方式调用
Uers ss = new Uers();
Uers.method1();
//使用省略方式调用
method1();//解释:同一个方法中可以省略类名
//要求在这里编写程序调用method2
//使用完整方式调用
ss.method2();
}
//没有static的变量
int i = 10;
//带有static的方法
public static void doSome() {
System.out.println("do some!");
}
// 没有static的方法
public void doOther() {
System.out.println("do other!");
}
}
注意:带有static的方法,其实可以采用类名方式访问,也可以采用引用的方式访问
但是即使采用引用的方式访问,实质上也是采用类名的方式,但是当引用为空时,并不会报空指针异常,因为访问静态的数据不需要对象的存在。但最好用:类名.方法。
Static关键字
- Java中,static表示”全局“或者”静态“的意思,用来修饰成员变量和成员方法。
- 使用satic的作用:
有static修饰的成员变量或成员方法,具有类特征,即这个类共有的,具有模板特性(这样减少了方法区内存空间,就像一个成员变量国籍(都是中国))。静态变量存储在方法去内存当中,不在堆内存即被类中所有的实例(对象)共享,因此,static变量和方法,可以在它的任何对象创建之前访问,无需对象。
什么时候定义为静态变量呢?
所有对象都有这个属性,并且所有对象的这个属性的值时一样的,建议定义为静态变量。
访问规则:类名.静态变量名。 - 可以使用static关键字来定义代码块。
static{
…
} - 静态代码块在类加载时执行,并且只执行一次。
- 静态代码块在一个类中可以编写多个,并且以自上到下的方式执行。
我们为什么要学它? - 静态代码块的作用?怎么用?用在哪儿?什么时候用?
和具体需求有关,如项目中要求在类加载的时刻/对执行代码完成日志的记录。类的准备工作。 - 实例代码块:
{
。。。。。。。;
}
可以编写多个,自上而下执行。
在构造方法之前执行,这个一个对象初始化的特殊时期。
什么时候static方法?
当所有的对象执行这个动作的时候,最终产生的影响时一样的。 - 静态方法中无法直接访问实例变量和实例方法,因为静态方法为类共有的数据。
继承
- 继承基本的作用:代码复用。但是继承是”最重要的作用是:有了继承才有以后“方法的重载”和”多态机制“。
- 继承的语法的格式:
*【修饰列表】 class 类名 extends 父类名{
类体= 属性+方法
} - Java语言中只支持单继承,只能继承一个类,载c++中支持多继承。
- B继承A类:
- 其中:A类称为:父类,基类,超类,superclass
- B类称为:字类,派生类,subclass
*Java语言当中子类继承父类哪些数据?
-私有的不支持继承。
-构造方法不支持继承。
-其它数据继承。 - java语言虽然支支持单继承,但是一个类也可以间接继承其它类。
- 如C extend A,A extends B,B extends T,
- C就间接继承A,T.
- Java语言中假设一个类没有显示的继承任何类,该类默认继承JAVASE库的java.lang.object类。