java 引入了包(package)机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理问题。java 允许将相关的类放在同一个 package 下,从而组成逻辑上的类库单元。如果希望把一个类放在指定的包结构下,应该在 java 源代码的第一个非注释行放置如下格式代码:
1 package packagename;
位于包中的每个类的完整类名都应该是包命和类名的组合,如果其他人需要使用该包下的类,也应该使用完整类名。
用命令行编译时,用 javac -d . xxx.java 会生成包层次相同的目录结构。
位于包中的类,在文件系统中也必须有与包命层次相同的目录结构。推荐用上述方法编译。
一个源文件只能指定一个包,只能包含一条 package 语句。同一个包下的类可以自由访问。值得注意的是,父包和子包之间确实表示了某种内在的逻辑关系,但在父包和子包在用法上则不存在任何关系,如果父包中的类要使用子包中的类,一样要使用包的全名。
java 引入了 import 关键字,import 可以向某个 java 文件中导入指定包层次下某个类或全部类
1 import package.subpackage…classname;
1 import package.subpackage…*;
一旦用 import导入指定类后,在该源文件中使用这些类的时候可以省略包前缀,不用使用包全名。
ps:如果一个源文件中导入了两个包,这两个包下有重名的类,这个时候依然要使用全名调用。
import static 用于导入指定类的某个静态成员变量、方法或全部的静态成员变量、方法。
1 import static package.subpackage…classname.fieldname|methodname;
1 import static package.subpackage…classname.*;
导入后,调用方法或静态变量,不需要写类名。
java 的继承通过 extends 关键字来实现,实现继承的类被称为子类,被继承的类被称为父类,有的也称其为基类、超类。
子类是对父类的扩展,子类是一种特殊的父类。每个类最多只有一个直接父类。值得指出的是,java的子类不能获得父类的构造器。
如果定义一个 java 类时并未显式指定这个类的直接父 类,则这个类默认扩展 java. lang. object 类。因此,java. lang. object 类是所有类的父类,要么是其直接父类,要么是其间接 父类。
需要在子类方法中调用父类方法,可以使用 super 限定来调用父类被覆盖的方法。super 用于限定该对象调用它从父类继承得到的实例变量或方法。和 this 一样不能在静态方法中使用。
当子类和父类拥有同名变量时,子类方法里访问的默认是子类定义的变量,父类的变量需要用 super 前缀来访问。
系统查找某一变量 a 的顺序:
在子类构造器中调用父类构造器可以类似的使用 super 调用来完成。
值得注意的是,不管是否使用 super 显示执行父类的构造器初始化代码,子类构造器总会调用父类构造器一次,有如下几种情况:
1 class solution { 2 public int removeelement(int[] nums, int val) { 3 int count = 0; 4 for(int i = 0; i < nums.length - count; i++){ 5 if(nums[i] == val){ 6 for(int j = i + 1; j < nums.length; j++) { 7 nums[j - 1] = nums[j]; 8 } 9 count++; 10 i--; 11 } 12 } 13 return nums.length - count; 14 } 15 }
1 class solution { 2 public int strstr(string haystack, string needle) { 3 for(int i = 0; i < haystack.length() - needle.length() +1; i++){ 4 if(haystack.substring(i, i + needle.length()).equals(needle)) 5 return i; 6 } 7 return -1; 8 } 9 }
如对本文有疑问, 点击进行留言回复!!
unity的错误解决办法:NullReferenceException: Object reference not set to an instance of an object;tiny proje
Hadoop 之 HDFS (HDFS 数据流的 读写 流程)
听说你一读Spring源码就懵逼?我帮你把架子搭好了,你填就行!
首席架构师推荐:金融保险领域数字化转型实践--如何优雅地修改业务中台中分层应用Maven多模块的版本号?(命令导入式)
[JVM学习之路]一、初识JVM,了解其结构、模型及生命周期
网友评论