第七周学习笔记DAY.2-封装

时间:2024-04-17 13:31:11

在一个类中需要使用非当前包里的类,需要进行导包操作
1)如果你使用的类是java.lang包里的类,不需要你手动导包,系统自动导包
2)要使用非java.lang包中的类,需要手动导包,导包使用import关键字
import xxx.xxx.xxx.类名;
3)导包语句写在包定义语句和类定义语句之间,一个Java文件中可能需要使用多个其他包中的类,就需要写多个import语句
4如果你需要导入某个包中大多数的类型,你可以使用*表示这个包中所有的类,注意,*不包含子文件夹中的类
5)如果一个类中同时使用了其它多个包中的同名类,那么需要使用类的完整路径名(包含类所在包的名称)来使用类

public class Penguin {
    //定义属性时,不再使用public修饰符,使用private进行修饰
    private String name;
    private int health;
    private int love;

    public Penguin() {
    }

    public Penguin(String name, int health, int love) {
        this.name = name;
        this.health = health;
        this.love = love;
    }

    public void show(){
        System.out.println("昵称:"+this.name+",健康值:"+this.health+",亲密度:"+this.love);
    }


    //因为name、health、love属性被private修饰了,这三个属性只能在本类中直接访问,外部程序不能直接访问这三个属性,需要提供公共的get/set方法

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHealth() {
        return health;
    }

    public void setHealth(int health) {
        //在这里,对你传递过来的health值进行判断
        if(health<1 || health>100){
            System.out.println("健康值范围1~100,你赋予的值不合理,默认赋予一个值60");
            this.health =60;
            return;//如果你赋予的健康值不合理,默认赋值,然后结束后续操作
        }
        this.health = health;
    }

    public int getLove() {
        return love;
    }

    public void setLove(int love) {
        //在这里,对你传递过来的love值进行判断
        if(love<1 || love>100){
            System.out.println("亲密度值范围1~100,你赋予的值不合理,默认赋予一个值70");
            this.love =70;
            return;//如果你赋予的健康值不合理,默认赋值,然后结束后续操作
        }
        this.love = love;
    }

    public static void main(String[] args) {

        Penguin penguin1 = new Penguin();
        penguin1.name = "QQ";
        penguin1.health = 90;
        penguin1.love = 99;
        penguin1.show();
    }
}

public class PenguinTest {

    public static void main(String[] args) {

        //使用无参构造方法创建对象
        Penguin penguin1 = new Penguin();
        //给属性赋值
        //在Penguin类中对name、health、love使用private修饰了,在外部程序中不能直接访问,只能通过Penguin类中公共的get/set方法访问操作
//        penguin1.name = "QQ";
//        penguin1.health = 90;
//        penguin1.love = 99;

        penguin1.setName("QQ");
        penguin1.setHealth(99);
        penguin1.setLove(100);
        System.out.println("昵称:"+penguin1.getName()+",健康值:"+penguin1.getHealth()+",亲密度:"+penguin1.getLove());
        penguin1.show();

        System.out.println("--------------------------------------");

        Penguin penguin2 = new Penguin();
        penguin2.setName("Q仔");
        penguin2.setHealth(-90);
        penguin2.setLove(-100);
        System.out.println("昵称:"+penguin2.getName()+",健康值:"+penguin2.getHealth()+",亲密度:"+penguin2.getLove());
        penguin2.show();
    }
}

 1)类的修饰符有public和默认修饰符
 2)public修饰符是公有访问级别,在任何位置都可以直接访问
 3)默认修饰符是包级私有,被默认修饰符修饰的类,只能被同一个包中的类访问

JVM加载类时,加载静态代码块
如果有多个静态块,按顺序加载
每个静态代码块只会被执行一次
static代码块可以用来设置相关配置信息,例如数据库的相关信息,还可以用来初始化数据

经过上述一些列的操作得到:
静态方法中只能访问静态变量和静态方法
非静态方法中可以访问非静态变量和非静态方法,也可以访问静态变量和静态方法
总结:静态的只能访问静态,非静态可以访问所有的