Java基本语法

169 阅读7分钟

1、 方法重载(Overload):

	(1.1)	在一个类中定义多个相同名称的方法。
	(1.2)	要求:
		(1.2.1)	方法名称相同
		(1.2.2)	参数列表不同
		(1.2.3)	与访问修饰符、返回值无关
	(1.3)	好处:
		(1.3.1)	屏蔽用户的使用差异,方便。

2、 构造方法(Constructor):

	(2.1)	概念:类中的特殊方法,主要用于创建对象。
	(2.2)	特点:
		(2.2.1)	名称与类名完全相同(包括大小写)。
		(2.2.2)	没有返回值类型。
		(2.2.3)	创建对象时(new对象时),触发构造方法的调用,不可通过句点的形式手工调用。
	(2.2.4)    注意:如果没有在类中显示定义过构造方法,则编译器默认提供无参构造方法。
	(2.2.5)	注意:如果已经手动添加过有参构造方法,则无参构造方法不再默认提供,可结合需求自行添加。(建议,必须手动添加无参构造方法)

3、this关键字:

	(3.1)	this代表“当前实例”,即是模板中的当前对象,模板服务与哪个对象,this就指向哪个对象。
	(3.2)	this第一种用法:调用本类中的实例属性、实例方法。例如:this.name、this.run() ,
	(3.3)	this第二种用法:调用本类中的其他构造方法。例如:this()、this(实参)。注意:必须在构造方法的首行。
	(3.4)	默认来讲,实例属性和方法前的this.隐式存在

4、面向对象三大特性

(4.1)封装:

(4.1.1)	概念:尽可能隐藏对象的内部实现细节,控制对象的修改及访问的权限。
(4.1.2)	private的访问修饰符,修饰属性,达到本类可见的效果。
(4.1.3)	get/set方法是外界访问私有属性的唯一通道,方法内部可对数据进行过滤。(可在set方法中添加过滤条件)
(4.1.4)	提供公共访问方法,以保证数据可以正常录入。

(4.2)继承:

(4.2.1)	程序中的继承,是类与类之间特征和行为的一种赠与或获得。

(4.2.2)	类与类之间必须满足“is a”的关系。

(4.2.3)	父类的选择:功能越精细,重合点越多的,越接近直接父类。

(4.2.4)	父类的抽象:根据程序需要使用到的多个具体类,进行共性的提取,进而定义父类。

(4.2.5)	在一组相同或类似的类中,抽取出共性的特征和行为,定义在父类中,实现重用。

(4.2.6)	产生继承关系之后,子类可以使用父类中的属性和方法,也可定义子类独有的属性和方法。

(4.2.7).	完整的子类 = 父类共性 + 子类独有

(4.2.8)	好处:既提高代码的复用性,又提高代码的可扩展性。

(4.2.9)	Java为单继承,一个类只能有一个直接父类,但可以多级继承,属性和方法逐级叠加。

(4.2.10)	访问修饰符://其他:不在一个包中,还没有继承关系
	
本类	同包	非同包子类	其他

在这里插入图片描述

(4.2.11)	不可继承:
	(4.2.11.1)	父类的构造方法,子类不可继承。
	(4.2.11.2)	父类中由private修饰的成员,不可继承(不可见)。
	(4.2.11.3)	父类中由default修饰的成员,子类不在同包时,不可继承(不可见)。

(4.2.12)	方法的覆盖/重写(Override)
	(4.2.12.1)	当父类提供的方法无法满足子类需求时,可以在子类中定义和父类相同的方法进行覆盖。
	(4.2.12.2)	要求:
		a	方法名、参数表、返回值,必须与父类完全相同。
		b	访问修饰符应与父类相同或比父类更宽泛。
	(4.2.12.3)	执行机制:子类覆盖父类方法后,优先执行子类覆盖后的方法版本。
  1. super关键字:

    (3.1) 第一种用法:在子类中,可以通过" super. "的形式访问父类的属性和方法,可解决一定的属性遮蔽、方法覆盖后的父类成员调用问题。

    (3.2) 第二种用法:super() 表示在子类构造方法的首行,调用父类的无参构造方法。

  2. 继承关系下的对象创建:

    (4.1) 继承关系下,构建子类对象时,会先构建父类对象。

    (4.2) 由“父类共性”+ “子类独有”组合成一个完整的子类对象。

  3. 继承关系下的对象创建流程:

    (5.1) 构建父类对象

    (5.2) 初始化自身属性

    (5.3) 执行自身构造方法中的逻辑代码

  4. 注意:

    (6.1)如果子类构造方法中,没有显示定义super()或super(实参),则默认提供super()。

    (6.2) 同一个子类构造方法中,super()、this()不可同时存在。

7.多态:

(7.1)	概念:父类引用指向子类对象,从而产生多种形态。

(7.2)	构成多态的前提,二者之间必须具有直接或间接的继承关系,父类引用可指向子类对象,进而形成多态。

(7.3)	父类引用仅可调用父类中所声明的属性和方法,不可调用子类独有的属性和方法。

(7.4)多态两种应用场景:
   (7.4.1)	场景一:使用父类作为方法形参,实现多态

(7.5) 装箱和拆箱:

	(7.5.1)	装箱:父类引用中保存真实子类对象,称为向上转型(多态核心概念)。
	
	(7.5.2)	拆箱:将父类应用中的真实子类对象,强转回子类本身类型,称为向下转型。
	
	(7.5.3)	注意:向下转型时,如果父类引用中的子类对象的类型与目标类型不匹配,则会发生类型转换异常。java.lang.ClassCastException
	
(7.6)	instanceof关键字:

	(7.6.1)	语法:父类引用 instanceof 类型(返回boolean类型的结果)	

(7.7)	总结:
	(7.7.1)	多态的两种应用场景:
		a	使用父类作为方法形参,实现多态。
			调用方法时,可传递的实参类型包括:本类型对象+其所有的子类对象。

		b	使用父类作为方法返回值,实现多态。
			调用方法后,可得到的结果类型包括:本类型对象+其所有的子类对象。

	(7.7.2)	多态的作用:
		a	屏蔽子类间的差异。
		b	灵活、耦合度低。

	时间与空间的平衡、效率与安全的平衡

抽象:

程序当中,哪些对象不该new?

Animal 	Vehicle(交通工具)    new Vehicle(
父类:不够完整、不够具体、不该独立存在,如何解决?通过abstract修饰类,意为抽象类,不能new对象



1.	abstract的意思:抽象的,似是而非的,像,却又不是,具备某种对象的特征,但不完整。
2.	abstract修饰类,意为“不够完整、不够具体,不该独立存在”
	(2.1)	即为抽象类,不能独立new对象。
	(2.2)	可被子类继承,对子类提供共性的属性和方法。
	(2.3)	可声明引用,更纯粹的使用多态。
	(2.4)	抽象类的构造方法的作用:构建子类对象时,先构建父类对象,由父类共性+子类独有组成完整的子类对象。

3.	总结:
	(3.1)	abstract修饰类:不能new对象,但可以声明引用。
	(3.2)	abstract修饰方法:只有方法声明,没有方法实现。(需包含在抽象类中)
	(3.3)	抽象类中不一定由抽象方法,但由抽象方法的类一定是抽象类。
	(3.4)	子类继承抽象类之后,必须覆盖父类当中所有的抽象方法,否则子类还是抽象类。

final:

修饰类:此类不能被继承
修饰方法:此方法不能被覆盖
修饰变量:此变量值不可改变--常量(无初始值、只允许赋值一次)
	局部常量:显示初始化
实例常量的赋值:显示初始化、动态代码块、构造方法。

要求: 实例常量赋值deadline:在构造方法完成之前,为实例常量赋值即可。 如果在构造方法中为实例常量赋值,必须保证所有的构造方法都可正确赋值。 静态常量的赋值:显示初始化、静态代码块。 要求: 静态常量赋值deadline:在类加载完成之前(通过类名调用之前),为静态常量赋值即可。

不同常量类型的特点:
基本数据类型常量:值不可变。
引用数据类型常量:地址不可变。