面向对象的关键字介绍

面向对象编程中使用的关键字

  • this
  • super
  • abstract
  • final
  • static
  • instanceof
  • package
  • import

this关键字的使用

1.this关键字
	this可以理解为:当前对象或者当前正在创建的对象(构造器中使用)
	1.1 在类的方法中,我们可以使用"this.属性名"或者"this.方法"的方法,调用类中定义的属性或者方法。
		通常情况下,我们都会省略"this."。特殊情况,如果方法的形参和类中定义的属性名相同时,我们必须通过"this.属性名"的方式显式调用类种定义的属性,否则将会出现逻辑错误。
	1.2 this调用构造器
		① 我们可以在类的构造器中,显式的使用"this(形参列表)"的方法调用类中定义好的构造器;
		② 构造器中不能通过"this(形参列表)"的方式调用自己,否则程序将会陷入无限死循环;
		③ 如果一个类中声明了n个构造器,那么最多会有n-1个构造器使用了"this(形参列表)";
		④ "this(形参列表)"必须放在构造器的首行;
		⑤ 在类的一个构造器中,最多只能声明一个"this(形参列表)";
		⑥ 在类中的一个构造器中,最多只能使用"super(形参列表)" 或者"this(形参列表)"二者中的一个。
2.this关键字所修饰的对象
	属性、方法、构造器

super关键字

super关键字的使用
1.super理解为:父类的
2.super可以用来调用:属性、方法、构造器 
3.super的使用
	3.1 我们可以在子类的方法或构造器中,通过"super.属性"或"super.方法"的方式,显式的调用父类中声明的属性或方法。但是,通常情况下,我们习惯去省略这个"super.";
	3.2 特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显式的使用"super.属性"的方式,表明调用的是父类中声明的属性。
	3.3 特殊情况:当子类重写了父类中的方法后,我们想在子类的方法中调用父类中被重写的方法时,必须显式的使用"super.方法"的方式,表明调用的是父类中被重写的方法。
4.super调用构造器
	4.1  我们可以在子类的构造器中显式的使用"super(形参列表)"的方式,调用父类中声明的指定的构造器
	4.2 "super(形参列表)"的使用,必须声明在子类构造器的首行!
	4.3 我们在类的构造器中,针对于"this(形参列表)"或"super(形参列表)"只能二选一,不能同时出现。
	4.4 在构造器的首行,既没有显式的声明"this(形参列表)"或"super(形参列表)",则默认调用的是父类中的空参构造器。super()
	4.5 在类的多个构造器中,至少有一个类的构造器使用了"super(形参列表)",调用父类中的构造器。
5.子类对象实例化的全过程
	5.1 从结果上看:
		子类继承父类以后,就获取了父类中声明的属性或方法。
		创建子类的对象中,在堆空间中,就会加载所有父类中声明的属性。
	5.2 从过程上看:
		当我们通过子类的构造器创建子类对象时,我们一定会直接或间接的调用其父类构造器, 直到调用了java.lang.Object类中空参的构造器为止。正因为加载过所有的父类结构,所以才可以看到内存中有父类中的结构,子类对象可以考虑进行调用。
		
明确:虽然创建子类对象时,调用了父类的构造器,但自始至终就创建过一个对象,即为new的子类对象。

instanceof关键字的使用

  1. a instanceof A:判断对象a是否是类A的实例。如果,返回true,如果不是,返回false;
  2. 使用情境:为了避免在向下转型时出现ClassCastException异常,我们在进行向下转型之前,先进行instanceof的判断,一旦返回true,就进行向下转型。如果返回false,不进行向下转型。
  3. 如果a instanceof A返回true,则a instanceof B也返回true。 其中类B是类A的父类

package关键字的使用

1. package关键字的使用
	1.1 为了更好地实现对项目中类的管理,提出了包的概念;
	1.2 使用package关键字声明类或者接口所属的包时,声明语句必须放在源文件的首行;
	1.3 package关键字的使用方法:
		package 包名;
	1.4 包名,属于标识符,要满足标识符的规则和规范;
	1.5 包名中,每"."一次,就代表一层文件目录;
2.补充:
	2.1 同一个项目中,不能存在两个或者多个同名的包。就类似于,文件系统中,不能存在两个相同的文件夹。
	2.2 同一个包中,不能存在同名的类或者接口。这是因为对Java源文件编译的时候,每个类或者接口都会生成一个类名.class或者接口名.class的文件。
	如果存在同名的类或者接口,会出现命名冲突。类比于,相同文件路径下,不能存在两个或者同名的文件。
3.JDK中主要的包的介绍:
	3.1 java.lang --> 包含一些Java语言的核心类,如String,Math,Integer等。使用java.lang中的类,可以不用显式的导包。如果需要使用java.lang子包的结构时,需要显式的导入。
	3.2 java.net --> 包含执行与网络相关操作的类或者接口。
	3.3 java.io --> 包含能提供多种输入/输出功能的类。
	3.4 java.util----包含一些实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数。
	3.5 java.text----包含了一些 java 格式化相关的类。
	3.6 java.sql----包含了 java 进行 JDBC 数据库编程的相关类/接口;
	3.7 java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。

package关键字的使用

1. package关键字的使用
	1.1 在.java源文件中使用import结构显式导入指定包下的类、接口;
	1.2 声明在包的声明和类的声明之间
	1.3 如果需要导入多个包时,并列写出即可
	1.4 使用"xxx.*"的方式,可以导入xxx包下所有的结构。
	1.5 如果导入的类或接口是java.lang包下的,或者是当前包下的,则可以省略此import语句。如果使用java.lang子包下的结构,需要显式声明。
	1.6 如果在代码中使用不同包下的同名的类。那么就需要使用类的全类名的方式指明调用的是哪个类。举例:java.lang.String str = "123";
	1.7 如果已经导入java.a包下的类。那么如果需要使用a子包下的类的话,仍然需要显式的导入a的子包。
	1.8 import static 组合的使用:调用指定类或者接口下的静态属性或者方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值