zoukankan      html  css  js  c++  java
  • 面向对象编程(三)封装--包

    打包的意义:

    ①   标准Java库是由一系列包组成,包括java.lang,java.util,java.net等。标准Java包就是层次型包结构,就如同硬盘上嵌套的子目录一样,我们可以使用嵌套层次结构来组成包;

    ②   Java的包是为了更好地规划代码,防止命名冲突和混乱。所以Java出现了打包机制;

    ③   当把类组织起来放进一个包内之时,也就给包中的成员赋予了相互访问的权限,就“拥有”了该包内的程序代码;

    ④   包访问权限为把类聚集在一个包中这一做法提供了意义和理由;

    package----声明包

     

    package com.iotek.ch09;

    public class lotekTeacher{

               private String name;//教师的姓名

               private int age;//教师的年龄

               /**

               *包访问权限

               *@return 自我介绍的内容

               */

               String introduction(){

             return “大家好我是”+name+”,今年”+age+”岁”;

    }

    }

    ①   包名由小写单词组成;

    ②   Java程序员都可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,编程规范要求程序员在自己定义包的名称之前加上唯一前缀;

    ③   由于互联网上的域名名称是不会重复的,所以一般推荐采用公司在互联网上的域名的倒置作为包的唯一前缀;

     

    一个类可以使用同一包中所有类以及其它包中的所有公开类

    我们可以通过两种方式访问其它包中的公开类

    ①   简单在每个类前面加上完整包名,例如java.util.Date today=new java.util.Date();

    ②   更简洁更通用的方式是:使用import语句来导包

    import java.util.Date;

    Date today=new Date();

     

    可以import特定类,也可以导入整个包。通过在源代码文件的顶部(在打包语句后)使用import导入语句来实现。

    步骤:

    在d盘下的javastudy文件夹中创建一个package文件夹,在其内编写Dog.java名称的程序

    源程序

    1 package com.iotek.entity;
    2 public class Dog{
    3     String name;
    4     public int age;
    5     public void show(){
    6         System.out.println(name+"------"+age);
    7     }
    8 }
    View Code

    上面的打包路径为com下的iotek下的entity中

     

    编译方法:进入程序路径后 javac –d . Dog.java

    编译成功后,会在包路径下产生编译好的文件

     

    同一个包中

    在编写一个DogTest的源程序

    1 package com.iotek.entity;
    2 public class DogTest{
    3     public static void main(String [] args){
    4         Dog dog=new Dog();
    5         dog.name="旺财";
    6         dog.age=5;
    7         dog.show();
    8     }
    9 }
    View Code

    编译通过之后

    运行方法:java com.iotek.entity.DogTest

     

    前面Dog.java中的name属性在同个包中的其它类是可以访问的。

     

    不同包中

    先将com文件夹删除

    DogTest.java中包路径更改为package com.iotek.test;

    如下

    1 package com.iotek.test;
    2 public class DogTest{
    3     public static void main(String [] args){
    4         Dog dog=new Dog();
    5         dog.name="旺财";
    6         dog.age=5;
    7         dog.show();
    8     }
    9 }
    View Code

    同样先编译Dog.java程序,在编译DogTest.java程序,此时编译不通过

    然后将DogTest.java程序再次更改

    1 package com.iotek.test;
    2 public class DogTest{
    3     public static void main(String [] args){
    4         com.iotek.entity .Dog dog=new com.iotek.entity . Dog();
    5         dog.name="旺财";
    6         dog.age=5;
    7         dog.show();
    8     }
    9 }
    View Code

    此时编译还是不通过

    原因是Dog.java中的name属性引起的错误,应该将其更改为public String name;

    源程序如下

     1 package com.iotek.entity;
     2 public class Dog{
     3     //String name;//同个包中的其它类是可以访问的,
     4     //不同包中的其它类不能访问使用默认访问修饰符的属性和方法
     5     public String name;
     6     public int age;
     7     public void show(){
     8         System.out.println(name+"------"+age);
     9     }
    10 }
    View Code

    更改后重新编译Dog.java,再次编译DogTest.java,此次未报错,成功生成

    然后运行java com.iotek.test.DogTest

    但DogTest.java中的全局包名太过麻烦,每次使用都要写

    再更改为用import导入的方法,package必须写第一句

     1 package com.iotek.test; 
     2 import com.iotek.entity.Dog; 
     3 public class DogTest{
     4     public static void main(String [] args){
     5         Dog dog=new Dog();
     6         dog.name="旺财";
     7         dog.age=5;
     8         dog.show();
     9     }
    10 }
    View Code

     再次编译也能够执行。

     

    综上:

    Dog.java和DogTest.java的最终代码如下

     1 package com.iotek.entity;
     2 public class Dog{
     3     //String name;//同个包中的其它类是可以访问的,
     4     //不同包中的其它类不能访问使用默认访问修饰符的属性和方法
     5     public String name;
     6     public int age;
     7     public void show(){
     8         System.out.println(name+"------"+age);
     9     }
    10 }
    Dog.java
     1 package com.iotek.test;
     2 import com.iotek.entity.Dog;
     3 public class DogTest{
     4     public static void main(String [] args){
     5         Dog dog=new Dog();
     6         dog.name="旺财";
     7         dog.age=5;
     8         dog.show();
     9     }
    10 }
    DogTest.java

    然后依次

    javac –d . Dog.java

    javac –d . DogTest.java

    java com.iotek.test.DogTest

    就可以完成包的创建及其调用

  • 相关阅读:
    go 本地安装 grpc-go
    vscode python code-runner 中文乱码解决
    spring-cloud-sleuth 学习资源
    vscode 快键键资源整理
    vscode and python
    redis分布式锁
    TF-IDF算法解释
    spring 4.1 xml配置头部信息 maven配置信息
    google像apple 30亿美元购买流量
    spring 启动异常Failed to read candidate component class
  • 原文地址:https://www.cnblogs.com/wzy330782/p/5274005.html
Copyright © 2011-2022 走看看