2

java之包类库精选

 2 years ago
source link: https://blog.51cto.com/JavaArchitect/5616137
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

没有人天生就喜欢辛苦和奔波,但生存规则就是这么残酷,不进则退,你不能拼命努力,就只能碌碌无为。

我们上一篇聊到了内部类,这一片我们聊一下包类库,针对于以下的概念,都会有实体例子配合着,给大家演示,希望给历险中的你带来一些帮助!!!

java之包类库精选_代码

    java包类库由一组支持程序开发的类组成。一个编译器或开发环境以一个类库为基础。

   类库可以单独从第三方软件商获得。类库方法从技术上说并不属于某种语言。例如String类不是java语言的内建部分,而是java标准类库的一部分。类库由几组相关的类簇构成,通常称为java API,即应用程序接口。java标准类库的类被划分为包,每个类属于一个具体的包。可以在联机java API文档中寻找需要的包。

二.知识点介绍

    2、定义格式

    4、import导包

    5、访问权限

    6、项目分层

三.知识点详解:

1、包的概念

    java的包,其实就是我们电脑系统中的文件夹,包里存放的是程序生成的.class文件。

    当.class文件很多的时候,通常我们会采用多个包进行存放管理他们,这种方式称为分包管理,分包管理是组织软件项目结构的基本方式。

    在项目中,我们将相同功能的类放到一个包中,方便管理。并且日常项目的分工也是以包作为边界。

    类中声明的包必须与实际class文件所在的文件夹情况相一致,即类声明在a包下,则生成的.class文件必须在a文件夹下,否则,程序运行时会找不到类。 

2、包的定义格式

    通常使用公司网址反写,可以有多层包,包名采用全部小写字母,多层包之间用”.”连接

    类中包的声明格式:package 包名.包名.包名…;

    如:百度官网网址baidu.com那么网址反写就为com.baidu      

    注意:声明包的语句,必须写在程序有效代码的第一行(注释不算)

  格式演示:

package com.baidu;//包的声明,必须在有效代码的第一行
import java.util.Scanner;
import java.util.Random;
public classDemo

3、包的访问

    在访问类时,为了能够找到该类,必须使用含有包名的类全名(包名.类名)。

包名.包名….类名

java.util.Scanner
java.util.Random
com.baidu.Demo

    带有包的类,创建对象格式:包名.类名 变量名 = new包名.类名();

com.baidu.Demod = new com.baidu.Demo();

    前提:包的访问与访问权限密切相关,这里以一般情况来说,即类用public修饰的情况。

3.1、类的简化访问

    当我们要使用一个类时,这个类与当前程序在同一个包中(即同一个文件夹中),或者这个类是java.lang包中的类时通常可以省略掉包名,直接使用该类。

如:cn.itcast包中有两个类,PersonTest类,与Person类。我们在PersonTest类中,访问Person类时,由于是同一个包下,访问时可以省略包名,即直接通过类名访问 Person。

类名 变量名 = new类名();
Person p =new Person();

    当我们要使用的类,与当前程序不在同一个包中(即不同文件夹中),要访问的类必须用public修饰才可访问。

package cn.com.javahelp02;
代码演示:
package Test2;


import com.Test.person;

public class Tested {
public static void main(String[] args) {
//在访问类时,为了能够找到该类,使用类时,应该使用 包含 包 的类全名。
// cn.itcast.Person p = newcn.itcast.Person();
// p.eat();
// cn.itcast6.Tree t = newcn.itcast6.Tree();
//当在同一个文件夹下不需要使用类全名
// Tree t = new Tree();
// t.chengLiang();
//因为String在java.lang包下 所以不需要使用类全名不需要导包
// String s = "";
//当被使用的类与使用的类不在同一个文件夹下时,
//被使用者必须用public修饰才可被其他包下的类访问,
//我们可以通过导包的方式使用该类,避免使用类全名
person p = new person();

//当多个文件夹下有相同的类名时,只能有一个导包使用,其他必须仍然书写全名。
Test2.person p2 = new Test2.person();
}
}
java之包类库精选_包类库_02

4、import导包

    我们每次使用类时,都需要写很长的包名。很麻烦,我们可以通过import导包的方式来简化。

    可以通过导包的方式使用该类,可以避免使用全类名编写(即,包类.类名)。

导包的格式:

import 包名.类名;
当程序导入指定的包后,使用类时,就可以简化了。演示如下
//导入包前的方式
//创建对象
java.util.Randomr1 = new java.util.Random();
java.util.Randomr2 = new java.util.Random();
java.util.Scannersc1 = new java.util.Scanner(System.in);
java.util.Scannersc2 = new java.util.Scanner(System.in);
//导入包后的方式
importjava.util.Random;
importjava.util.Scanner;
//创建对象
Random r1 =new Random();
Random r2 =new Random();
Scanner sc1 =new Scanner(System.in);
Scanner sc2 =new Scanner(System.in);

    import导包代码书写的位置:在声明包package后,定义所有类class前,    使用导包import包名.包名.类名;

5、访问权限

    在Java中提供了四种访问权限,使用不同的访问权限时,被修饰的内容会有不同的访问权限,以下表来说明不同权限的访问能力:

public

protected受保护的

default默认

private私有的

同一包中(子类与无关类)

不同包的子类

不同包中的无关类

    所以,在日常开发过程中,如果允许其他包的类访问使用public,如果仅允许其他包的子类访问使用protected,仅本包内的类访问使用默认,仅能本类中访问使用private。

代码演示:

我们先看一下代码结构:

java之包类库精选_代码_03

person.java

package Test2;


public class person {
/*
* 访问权限修饰符
*/
public static class Person {
public void method1(){
System.out.println("公共方法");
}
protected void method2(){
System.out.println("受保护的方法(为了给子类使用)");
}
void method3(){
System.out.println("默认权限方法");
}
private void method4(){
System.out.println("私有方法");
}
//同一个类中
public void test(){
method1();
method2();
method3();
method4();
}
}
/*
*四种方法都可以执行
*/
public static class Test {

public static void main(String[] args) {
Person p = new Person();
p.test();
}
}
/*
* 同一个包下 子类 或者无关类
*/
public class Student {

public void test(){
Person p = new Person();
p.method1();
p.method2();
p.method3();
// p.method4();
}
}

}
java之包类库精选_包类库_04

  Student.java

package Test2;


/* * 不同包下的子类
*/
public class Student extends person.Person {
public void test(){
method1();
method2();
// method3();
// method4();
}
}
java之包类库精选_java_05

Tested.java

package Test2;


public class Tested {
private final static String name = "磊哥的java历险记-@51博客";
public static void main(String[] args) {
/*
* 不同包下的无关类
*/
person.Person p = new person.Person();
p.method1();
p.method2();
p.method3();
//p.method4();
System.out.println("============="+name+"=============");
}
}
java之包类库精选_概念_06

执行结果:

java之包类库精选_包类库_07

在日常开发过程中,编写的类、方法、成员变量的访问

    (1)要想仅能在本类中访问使用private修饰;

    (2)要想本包中的类都可以访问不加修饰符即可;

    (3)要想本包中的类与其他包中的子类可以访问使用protected修饰

    (4)要想所有包中的所有类都可以访问使用public修饰。

如果类用public修饰,则类名必须与文件名相同。一个文件中只能有一个public修饰的类。

6、项目分层(分包)

    一个项目随着功能的增加、继承树的扩展会出现众多的Java类。这时,不仅需要将一个类中的整体功能抽取出成为独立方法,还需要将功能边界即功能所有者界定,而这就是定义类与包的过程。

在定义好不同的类之后,再将相似功能的类放到同一个包中进行统一管理。

我们后期会讲到框架,对于一个项目去讲,说用到ssm,ssh,微服务,一站式,也就意味了这个项目有一定的代码体量,我们不可能按照现在的样子,创建一个包,全放里面,所以我们要给这些分包,我们简单看一下,大概会分为哪几类:

1、view层: 视图层,项目的页面展示代码。

2、controller层: 控制层, 接受界面传入的数据,将要数据交给业务层处理。

3、service层: 业务层, 功能的实现, 与controller控制层和数据访问层DAO交互, 将对数据库的操作交给DAO数据访问层来处理。

4、 dao层: 数据访问层, 主要用来和数据库交换数据。

5、 db数据库: 这里指数据库,MySQL、SQLServer、Oracle、Sybase、DB2

6、 实体包: 存放JavaBean(实体类,一个表一个类,最好创建的实体类与数据库里的表的名字和数量都一样。

7、 tools工具包:存放项目中封装好的工具类。

8、test 测试包: 项目功能测试的代码(就是目前阶段最常见的)

如果再详细,还会有很多的分层,这里就不一一介绍了,等后面有机会,会和兄弟们细聊!

感谢兄弟们的持续关注,文章中对应概念下都会有代码和代码演示,初学的兄弟们可以自己动手试试!

后面会持续更新java基础这一系列的文章!

java之包类库精选_java_08

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK