Java核心技术(卷I) 3、用户自定义类

2021-02-14  本文已影响0人  kaiker

Java核心技术(卷I)关于类与对象基础 https://www.jianshu.com/p/36ba065d1624

Employee类

class Employee
{
  // 字段
   private String name;
   private double salary;
   private LocalDate hireDay;

   // 构造器
   public Employee(String n, double s, int year, int month, int day)
   {
      name = n;
      salary = s;
      hireDay = LocalDate.of(year, month, day);
   }

  // 封装的实现,通过get set方法操作字段
   public String getName()
   {
      return name;
   }

   public double getSalary()
   {
      return salary;
   }

   public LocalDate getHireDay()
   {
      return hireDay;
   }

   public void raiseSalary(double byPercent)
   {
      double raise = salary * byPercent / 100;
      salary += raise;
   }
}

在一个源文件中(xxx.java),只能有一个公共类,但可以有任意数目的非公共类

构造器

public Employee(String n, double s, int year, int month, int day)
   {
      name = n;
      salary = s;
      hireDay = LocalDate.of(year, month, day);
   }
public Employee(String n, double s, ...){
  String name = n; // 不对
}

显示参数与隐式参数

   public void raiseSalary(double byPercent)
   {
      double raise = salary * byPercent / 100;
      salary += raise;
   }

封装

   public String getName()
   {
      return name;
   }

   public double getSalary()
   {
      return salary;
   }

不要编写返回可变对象引用的访问器方法,如需要返回一个可变对象的引用,首先应该对它进行克隆。

class Employee{
  private Date hireDay;
  public Date getHireDay(){
    return hireDay; // 这个是可以通过Date类的setTime进行修改的
  }
}

Employee harry = ...;
Date d = harry.getHireDay();
d.setTime(); // 这样就把Employee里的内容改了
返回可变数据字段的引用

私有方法

在类中对构造方法进行实例化 https://www.cnblogs.com/vaejava/articles/6512305.html

class Single{
  private static Single instance = new Single();
  // 在类中对构造方法进行实例化
  private Single() ; //将构造方法私有化
  public static Single getInstance(){
    return instance ;
  }
  //对insance 对象进行get方法取得
  public void print(){
    System.put.println("Hello world!!");
  }
}

public class SingleDemo02{
  public static void main(String args[]){
  Single s = null ; //声明对象
  s = Single.getInstance();
  //通过类中的get方法对对象instance简介进行实例化
  s.print();
}
}

final字段

private final StringBuilder evaluations;
evaluations = new StringBuilder();
public void giveGoldStar(){
  evaluations.append(LocalDate.now() + "Gold star");  // 这个还是可以变的
}
上一篇下一篇

猜你喜欢

热点阅读