016-包和访问控制权限(老杜)

目录

HelloWorld.java

Test01.java

Test02.java

Test03.java

访问控制权限

User.java

Vip.java

Test01.java

Test02.java


HelloWorld.java

/*
    关于java语言中的package和import机制:

        1、为什么要使用package?
            package是java中包机制。包机制的作用是为了方便程序的管理。
            不同功能的类分别存放在不同的包下。(按照功能划分的,不同的
            软件包具有不同的功能。)
        
        2、package怎么用?
            package是一个关键字,后面加包名。例如:
            package com.bjpowernode.javase.chapter17;
            注意:package语句只允许出现在java源代码的第一行。
        
        3、包名有没有命名规范?有
            一般都采用公司域名倒序的方式(因为公司域名具有全球唯一性。)
            包名命名规范:
                公司域名倒序 + 项目名 + 模块名 + 功能名
        
        4、对于带有package的java程序怎么编译?怎么运行?

            采用之前的编译和运行不行了。
            类名不再是:HelloWorld了。
            类名是:com.bjpowernode.javase.chapter17.HelloWorld

            编译:
                javac -d . HelloWorld.java
                解释一下:
                    javac 负责编译的命令
                    -d        带包编译
                    .        代表编译之后生成的东西放到当前目录下(点代表当前目录)
                    HelloWorld.java  被编译的java文件名。
                
            运行:
                java com.bjpowernode.javase.chapter17.HelloWorld
        
        5、关于import的使用。

            import什么时候使用?
                A类中使用B类。
                A和B类都在同一个包下。不需要import。
                A和B类不在同一个包下。需要使用import。
                java.lang.*;这个包下的类不需要使用import导入。

            import怎么用?
                import语句只能出现在package语句之下,class声明语句之上。
                import语句还可以采用星号的方式。
*/
package com.bjpowernode.javase.chapter17;

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("Hello World!"); // Hello World!
    }
}

Test01.java

package com.bjpowernode.javase.chapter17;

public class Test01{
    public static void main(String[] args){

        // 创建HelloWorld对象
        // HelloWorld的完整类名:com.bjpowernode.javase.chapter17.HelloWorld
        com.bjpowernode.javase.chapter17.HelloWorld hw = new com.bjpowernode.javase.chapter17.HelloWorld();

        System.out.println(hw); //com.bjpowernode.javase.chapter17.HelloWorld@28a418fc

        // 包名可以省略吗?
        // 思考:这里的包名之所以可以省略,是因为HelloWorld和Test01在同一个package下。
        HelloWorld hw2 = new HelloWorld();
        System.out.println(hw2); //com.bjpowernode.javase.chapter17.HelloWorld@5305068a
    }
}

Test02.java

package com;

// 将需要的类导入。
//import com.bjpowernode.javase.chapter17.HelloWorld;
import com.bjpowernode.javase.chapter17.*;

public class Test02{
    public static void main(String[] args){
        /*
            Test02在com包下。
            HelloWorld在com.bjpowernode.javase.chapter17下。
            不在同一个package下,包名可以省略吗?
                不能省略。
        */
        //错误: 找不到符号
        /*
        HelloWorld hw = new HelloWorld();
        System.out.println(hw);
        */

        /*
        com.bjpowernode.javase.chapter17.HelloWorld hw = new com.bjpowernode.javase.chapter17.HelloWorld();
        System.out.println(hw);

        com.bjpowernode.javase.chapter17.HelloWorld hw2 = new com.bjpowernode.javase.chapter17.HelloWorld();
        System.out.println(hw2);

        com.bjpowernode.javase.chapter17.HelloWorld hw3 = new com.bjpowernode.javase.chapter17.HelloWorld();
        System.out.println(hw3);
        */

        HelloWorld hw1 = new HelloWorld();
        System.out.println(hw1); // com.bjpowernode.javase.chapter17.HelloWorld@5caf905d

        HelloWorld hw2 = new HelloWorld();
        System.out.println(hw2); // com.bjpowernode.javase.chapter17.HelloWorld@27716f4
    }
}

Test03.java

package com.bjpowernode.javase.chapter17;

//import java.util.Scanner;
import java.util.*;

public class Test03{
    public static void main(String[] args){

        // 为什么要这样写?
        // Test03类和Scanner类不在同一个包下。
        // java.util就是Scanner类的包名。
        //java.util.Scanner s = new java.util.Scanner(System.in);    

        Scanner s = new Scanner(System.in);
        String str = s.next();
        System.out.println("您输入的字符串是--->" + str);

        java.lang.String name = "zhangsan";
        System.out.println("名字是:" + name);

        String username = "lisi";
        System.out.println("用户名是:" + username);
    }
}

访问控制权限

User.java

package com.bjpowernode;

public class User{
    //给一些属性
    // 私有的
    private int id;
    // 受保护的
    protected int age;
    // 公开的
    public int weight;
    // 默认的
    String name;

    // 方法
    public void m1(){}
    private void m2(){}
    void m3(){}
    protected void m4(){}

    // 静态方法也可以。
    public static void x(){}
    private static void y(){}
    static void z(){}
    protected static void k(){}
}

//错误: 此处不允许使用修饰符private
/*
private class MyClass1{
}
*/

//错误: 此处不允许使用修饰符protected
/*
protected class MyClass1{
}
*/

class MyClass1{

}

Vip.java

package com.bjpowernode3; // 包变化了。

// 导入
import com.bjpowernode.User;

// User在com.bjpowernode包下。
// Vip在com.bjpowernode3包下。
// User和Vip不在同一个包下。
// 但是Vip是User的子类。
public class Vip extends User{

    //实例方法
    public void shopping(){
        // this表示当前对象
        // protected可以
        System.out.println(this.age);
        // 错误:默认 不行。
        //System.out.println(this.name);
    }

}

Test01.java

package com.bjpowernode;

public class Test01{

    public static void main(String[] args){
        User user = new User();

        // private修饰的元素只能在本类中用。
        //System.out.println(user.id);
        System.out.println(user.age); // 0
        System.out.println(user.weight); // 0
        System.out.println(user.name); // null
    }
}

Test02.java

package com.bjpowernode2; // 包变化了。

//import com.bjpowernode.*;
import com.bjpowernode.User;

public class Test02{
    public static void main(String[] args){

        User user = new User();

        // 错误:protected在这里不行。
        //System.out.println(user.age);

        // 可以:公开的,在哪都行。
        System.out.println(user.weight); // 0

        // 错误:“默认”在这里也不行。
        //System.out.println(user.name);

    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值