面向对象3:static静态&包和导包&访问权限&getter和setter

static静态

静态的内容在内存中是保留一份的,并且各个对象之间进行共享

推荐使用类名访问静态的内容

特点:

  1. 数据共享
  2. 属于类的,并不属于对象
  3. 优先于对象产生的
package JAVA面向对象;

public class Student2 {
    String name;
    int age;
    static String banji;//static,它是共享的
    public Student2(String name,int age,String banji){
        this.name=name;
        this.age =age;
        this.banji =banji;
    }
    public void xinxi(){
        System.out.println("叫"+name+"的那个学生今年"+age+"岁,就读于"+banji);
    }
    public static void main(String[] args) {
        Student2 a = new Student2("张三",19,"高二三班");
        Student2 b = new Student2("李四",18,"高二四班");
//后来分班,张三和李四分在同一班级即高二一班
        Student2.banji="高二一班";//用类名访问静态的内容
        a.xinxi();
        b.xinxi();
    }
}

包和导包

包:其实本质上就是文件夹

t在代码中需要 写package包名

例如:

​ 给tieba.baidu.com创建包,包名为:com.baidu.tieba,相当于三层文件夹

导包(Alt+Enter):import包+类;

不需要导包的情况:

  1. 在自己包的情况下
  2. java.lang包下的所有内容都不需要导包

访问权限

  1. public:公共的,所有人都可以访问(使用频率高)
  2. default:包访问权限,在自己包内可以随意访问
  3. private:私有的(使用频率高)

在自己类里可以随意访问

二、使用类创建对象的权限 & 对象访问成员变量与方法的权限(来源:https://www.cnblogs.com/Ccurie/p/10603337.html)

  1. 在同一包中:

可以在任何另外一个类中使用public类与友好类创建对象;

创建的对象能够通过“.”运算符操作自己类中不是private的成员变量与方法。

  1. 不在同一包中:import语句

可以在任何另外一个类中使用public类创建对象;

创建的对象能够通过“.”运算符操作自己类中public的成员变量与方法。

getter和setter

成员变量一般使用private来声明,保护成员变量不被胡乱赋值

  1. getter:主要是给成员变量赋值,做一定的保护
  2. setter:从成员变量中获取数据
package com.daobao.entity;

public class Preson {
     private String name;
     private int age;
    //set(放在赋值)
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        if(age<0){
            this.age=0;
        }else{
            this.age=age;
        }// 保护年龄,使之符合逻辑
    }
    //get拿到(放在打印输出)
    public String getName() {
        return this.name;
    }
    public int getAge() {
        return this.age;
    }
    //方法
    public void eat(){
        System.out.println(this.name+"在吃东西");
    }

}
package com.daobao.entity;//包的声明

public class TestPerson {
    public static void main(String[] args) {
      Preson a=new Preson();
        /* 访问权限(在同一包中):
         *  可以在任何另外一个类中使用public类与友好类创建对象;
         *  创建的对象能够通过“.”运算符操作自己类中不是private的成员变量与方法。
         */
      a.setName("张三");
      a.setAge(-2);

      System.out.println(a.getName());
      System.out.println(a.getAge());
      a.eat();
    }
}
上一篇:那vue中是如何检测数组变化的呢?


下一篇:vue的computed实现原理