萌新卷妹带你从头复习JavaSE-包与继承
萌新卷妹带你从头复习JavaSE-包与继承
✨欢迎关注🖱点赞🎀收藏⭐留言✒
🔮本文由京与旧铺原创,csdn首发!
😘系列专栏:java学习
💻首发时间:🎞2022年10月18日🎠
🎨你做三四月的事,八九月就会有答案,一起加油吧
🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦
🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲
💬推荐一款模拟面试、刷题神器👉[点击进入网站
1.包
1.1概念
Java 允许使用包( package )将类组织起来。借助于包可以方便地组织自己的代码,并将自己的代码与别人提供的代码库分开管理。 标准的 Java 类库分布在多个包中,包括 java.lang、java.util 和java.net 等。标准的 Java包具有一个层次结构。如同硬盘的目录嵌套一样,也可以使用嵌套层次组织包。所有标准的Java 包都处于java 和 javax 包层次中。 使用包的主要原因是确保类名的唯一性。 假如两个程序员不约而同地建立了Employee类。只要将这些类放置在不同的包中, 就不会产生冲突。事实上,为了保证包名的绝对唯一性, Sun 公司建议将公司的因特网域名(这显然是独一无二的) 以逆序的形式作为包名,并且对于不同的项目使用不同的子包。例如, weijianhuawen.com
是一个的域名。逆序形式为 com.weijianhuawen
。这个包还可以被进一步地划分成子包, 如 com.weijianhuawen.corejava
。 ✨从编译器的角度来看, 嵌套的包之间没有任何关系。例如,java.util
包与java.util.jar
包毫无关系。每一个都拥有独立的类集合。
1.2类的组织
对类进行组织是由关键字package
来设置类所在的包路径。
package 路径;
package com.csdn.test;
复制代码
⭐️规则:
- 在
.java
文件最上面加上package
语句指定该文件的代码所在的包。 - 包名尽量指定成唯一的名字,一般采用公司或单位的域名的颠倒形式。(如csdn.com,则包名com.csdn....)
- 包名要与路径相统一,如一个包名为
com.csdn.test
,则它所对应的路径为com/csdn/test
。 - 如果没有package包,则这些类会被放在一个默认包中。
包的创建: 不过在创建包前要注意设置一下编译器,这样编译器才能自动将你所写的包名根据.
分开自动生成路径,否则有可能出现包名为com.csdn.test
。 包创建好后,创建一个类,编译器自动会生成语句package指定当前类所在的包。
1.3导入包中的类
在一个类中我们经常需要使用Java内置的一些方法,这个时候往往需要导包,比如以字符串输出数组的方法toString
,我们需要导入java.util
包中的Arrays
类。 最原始的方法就是将类的具体路径写出来,再调用方法。
package com.csdn.test;
public class Package {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9};
String s = java.util.Arrays.toString(arr);
System.out.println(s);
}
}
复制代码
除此之外,有一个关键字import
能够导入一个包中具体的类。
package com.csdn.test;
import java.util.Arrays;//导入java.util包中的Arrays类
public class Package {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9};
System.out.println(Arrays.toString(arr));
}
}
复制代码
Arrays是直接点出toString
方法说明该方法是静态的。 除了import java.util.Arrays
导入包中的类,还可以使用import java.util.*
,这个语句会导入java.util
包中所有的类,但是不是直接将这个包中所有类全部导入,而是用到哪一个类就导入哪一个类。比如说只用Arrays
类,实际上只会导入Arrays
类,而这个*
可以理解为通配符。 但是使用*
导入类可能会存在一个问题,就是你导入两个或多个包,其中里面有两个包有同名的类,这个时候就会报错,因为编译器不知道你究竟需要导哪一个类。比如Date
类, 这个时候要么写全路径访问,要么导包时具体导入所需要的那一个类。 如果你要得到一个时间戳,则导入包时语句需改为:
import java.util.Date;
import java.sql.*;
复制代码
package com.csdn.test;
import java.util.Date;
import java.sql.*;
public class Import {
public static void main(String[] args) {
Date date = new Date();
//获取时间戳
System.out.println(date.getTime());
}
}
复制代码
如果不想改import语句,这需要写出类的全路径创建对象。
package com.csdn.test;
import java.util.*;
import java.sql.*;
public class Import {
public static void main(String[] args) {
java.util.Date date = new java.util.Date();
//获取时间戳
System.out.println(date.getTime());
}
}
复制代码
因为时间一直在变,所以时间戳也一直在变,所以不同时间运行程序结果是不同的。
如果导入类的类名与所在类类名相同,请把类名修改,否则会报错。
//被导入的类
package com.csdn.test;
public class Package {
public int add(int a, int b) {
return a + b;
}
}
复制代码
import com.csdn.test.Package;
public class Package2 {
public static void main(String[] args) {
Package p = new Package();
int sum = p.add(2,3);
System.out.println(sum);
}
}
复制代码
1.4静态导入
使用import static
可以导入包中静态的方法或字段。 比如我们最常使用的打印方法:
package com.csdn.test;
import static java.lang.System.*;
public class Test {
public static void main(String[] args) {
String name = "未见花闻";
out.println(name);
}
}
复制代码
还有数学运算方法Math
包,里面的方法也是静态的。
package com.csdn.test;
import static java.lang.Math.*;
public class Test {
public static void main(String[] args) {
int a =2;
double b = pow(a, 3);
System.out.println(b);
System.out.println(abs(-999));
System.out.println(min(1, 5));
System.out.println(max(122, 867));
}
}
复制代码
注意:java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。注意: java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
1.5包访问权限
前面我们已经了解了public和privatepublic和private这两个关键字分别表示公共与私有。但是一个类中的成员我们既没有说明public也没有说明private,没有任何访问权限的关键字修饰,则表示默认权限,即包访问权限,就是在同一个包内能够访问,不同包之间是不能访问的。
package com.csdn;
public class Demo2 {
int val = 10;
}
复制代码
在包外访问不到这个val: 包内访问:
package com.csdn;
public class Demo2 {
int val = 10;
public static void main(String[] args) {
Demo2 d = new Demo2();
System.out.println(d.val);
}
}
复制代码
- 点赞
- 收藏
- 关注作者
评论(0)