天天看点

Java面向对象之静态属性静态方法、访问权限、getter与setter

一、静态

1、static静态的特点

(1)数据共享

(2)属于类的.并不属于对象

(3)优先于对象产生的

2、优于对象产生(构造器解释)

在程序执行时,是先创建静态构造器,再创建通用构造器。

public class Test03{
  {
    System.out.println("---我是通用构造器---");
  }
  
  static{
    System.out.println("---我是静态构造器---");
  }
  
  //创建构造方法
  public Test03(){
    System.out.println("------构造方法------");
  }
  //定义主方法
  public static void main(String[] args){
    new Test03();  //调用构造方法
  }
}      
Java面向对象之静态属性静态方法、访问权限、getter与setter

3、静态属性或方法使用类名去访问(静态方法也可直接调用)

public class Test03{
  static char level = 'D';  //定义静态属性
  {
    System.out.println("---我是通用构造器---");
  }
  
  //静态方法会默认执行,不创建对象也会执行
  static{
    System.out.println("---我是静态构造器---");
  }
  
  //创建构造方法
  public Test03(){
    System.out.println("------构造方法------");
  }
  public static void SStatic(){
    System.out.print("She is " + size + ' ');  //使用静态属性可以不用this
    System.out.println("------我是静态方法------");
  }
  //定义主方法
  public static void main(String[] args){
    Test03.SStatic();  //使用类名访问静态方法
    SStatic();  //直接访问静态方法
  }
}      
Java面向对象之静态属性静态方法、访问权限、getter与setter

二、访问权限

1、权限类别

public:公共的,所有成员都能访问

default:默认的,也称包访问权限,在自己的包内才能访问,其他包内不能访问

private:私有的,在其他类中不能访问(包中可以有多个类)

2、练习

public class Test03{
  public String a = "public";   //公有变量
  String b = "default";  //默认变量
  private String c = "private";  //私有变量
  
  public static void main(String[] args){
    Test03 Te = new Test03();  //创建对象
    //主方法中访问三种类型的变量
    System.out.println(Te.a);
    System.out.println(Te.b); 
    System.out.println(Te.c);    
  }
}      
Java面向对象之静态属性静态方法、访问权限、getter与setter

在其他包(文件夹)中则无法访问到变量b,在其他类中无法访问到变量c。

我们平时用的最多的就是public和private。

三、getter与setter

  • 主方法类的内容:
public class Test03 {
  public static void main(String[] args){
    Test03_Person P = new Test03_Person();  //创建对象人
    
    //年龄的语法没有问题。但是,逻辑上不对,年龄不可能是负数!
    // P.name = ”草帽路飞";  //给对象属性赋值
    // P.age = -1;
    
    //查看这个人的名字和年龄
    P.setName("草帽路飞");  //给私有成员属性赋值
    P.setAge(-1);  //给私有成员属性赋值
    System.out.println(P.getName());  //获取私有成员属性
    System.out.println(P.getAge()); 
    P.act();
  }
}      
  • 对象人类的内容
public class Test03_Person{
  //成员安量是私有的
  private String name;
  private int age;
  
  //setter原型
  public void setName(String name){
    this.name = name;
  }
  //保证我们的成员变量是值是规范的
  public void setAge(int age){
    if (age<0){
      this.age = 0;
    }else{
      this.age = age;
    }
  }
  
  //getter原型
  public String getName(){
    return this.name;
  }
  public int getAge(){
    return this.age;
  }
  
  //定义人的行为方法
  public void act(){
    System.out.println("行为:" + this.age + "岁大的" + this.name + "正在散步~");
  }
  
}      
  • 结果
  • 2、getter与setter的调出方法

    在写好属性之后,空白处右击,Generate,选Getter and Setter,就会自动生成以上getter与setter的原型框架,只需要稍作修改就可以直接使用了。