Java_Day8(构造方法,this,static,继承)

构造方法

  • 构造方法又被称为构造函数/构造器
  • 构造方法语法结构:
    【修饰符列表】 构造方法名(形式参数列表){
    }
    == 对于构造方法来说:返回值不需要指定,并且不能写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类。
发布了50 篇原创文章 · 获赞 8 · 访问量 3077

猜你喜欢

转载自blog.csdn.net/jiahuan_/article/details/104914956
今日推荐