萌新卷妹带你从头复习JavaSE-包与继承

举报
京与旧铺 发表于 2022/10/31 17:51:24 2022/10/31
【摘要】 萌新卷妹带你从头复习JavaSE-包与继承✨欢迎关注🖱点赞🎀收藏⭐留言✒🔮本文由京与旧铺原创,csdn首发!😘系列专栏:java学习💻首发时间:🎞2022年10月18日🎠🎨你做三四月的事,八九月就会有答案,一起加油吧🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲💬推荐一款模拟面试、刷...

萌新卷妹带你从头复习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;
复制代码

⭐️规则:

  1. .java文件最上面加上package语句指定该文件的代码所在的包。
  2. 包名尽量指定成唯一的名字,一般采用公司或单位的域名的颠倒形式。(如csdn.com,则包名com.csdn....)
  3. 包名要与路径相统一,如一个包名为com.csdn.test,则它所对应的路径为com/csdn/test
  4. 如果没有package包,则这些类会被放在一个默认包中。

包的创建: 1 不过在创建包前要注意设置一下编译器,这样编译器才能自动将你所写的包名根据.分开自动生成路径,否则有可能出现包名为com.csdn.test2 包创建好后,创建一个类,编译器自动会生成语句package指定当前类所在的包。 3

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);
    }
}
复制代码

4

除此之外,有一个关键字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方法说明该方法是静态的。 3 除了import java.util.Arrays导入包中的类,还可以使用import java.util.*,这个语句会导入java.util包中所有的类,但是不是直接将这个包中所有类全部导入,而是用到哪一个类就导入哪一个类。比如说只用Arrays类,实际上只会导入Arrays类,而这个*可以理解为通配符。 但是使用*导入类可能会存在一个问题,就是你导入两个或多个包,其中里面有两个包有同名的类,这个时候就会报错,因为编译器不知道你究竟需要导哪一个类。比如Date类, 5 6 这个时候要么写全路径访问,要么导包时具体导入所需要的那一个类。 如果你要得到一个时间戳,则导入包时语句需改为:

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());
    }
}
​
复制代码

7 如果不想改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());
    }
}
复制代码

8 因为时间一直在变,所以时间戳也一直在变,所以不同时间运行程序结果是不同的。

如果导入类的类名与所在类类名相同,请把类名修改,否则会报错。

//被导入的类
package com.csdn.test;
public class Package {
    public int add(int a, int b) {
        return a + b;
    }
}
复制代码

9

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);
    }
}
复制代码

10

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);
    }
}
复制代码

11 还有数学运算方法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));
    }
}
复制代码

12

注意: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: 13 包内访问:

package com.csdn;
​
public class Demo2 {
    int val = 10;
​
    public static void main(String[] args) {
        Demo2 d = new Demo2();
        System.out.println(d.val);
    }
}
复制代码

14



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。