美文网首页
Java核心技术(卷I) 3、用户自定义类

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

作者: kaiker | 来源:发表于2021-02-14 17:57 被阅读0次

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),只能有一个公共类,但可以有任意数目的非公共类

构造器

  • 当构造Employee类对象时,构造器会运行,从而将实例字段初始化为所希望的初始字段
public Employee(String n, double s, int year, int month, int day)
   {
      name = n;
      salary = s;
      hireDay = LocalDate.of(year, month, day);
   }
  • 构造器总是结合new运算符调用。不能对一个已经存在的对象调用构造器来达到重新设置实例字段的目的。
  • 构造器与类同名、构造器没有返回值、构造器总是伴随着new操作符一起调用、构造器可以有多个、构造器参数大于等于0
  • 不要在构造器中定义与实例字段同名的局部变量,比如
public Employee(String n, double s, ...){
  String name = n; // 不对
}

显示参数与隐式参数

  • 显示参数:byPercent
  • 隐式参数:salary
   public void raiseSalary(double byPercent)
   {
      double raise = salary * byPercent / 100;
      salary += raise;
   }

封装

  • 如果没有封装,私有的name字段一旦通过构造器构造,将无法进行修改。
  • 如果要进行封装,提供一个私有的数据字段、一个公共的字段访问器方法、一个公共的字段更改器方法
  • 带来的好处包括:1.可以改变内部实现 2.更改器方法可以完成错误检查
   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里的内容改了
返回可变数据字段的引用

私有方法

  • 应当将所有数据字段设置为私有
  • 私有方法添加private实现,只有当前类可以用,别的类不可以调用。

在类中对构造方法进行实例化 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字段

  • final字段在构造对象时初始化
  • 构造器执行后,这个字段的值便已经设置,此后不能再修改该字段
  • final关键字只是表示存储在变量中对象引用不会再指示另一个不同的对象,所以如果修饰基本类型和不可变类字段会很有效
private final StringBuilder evaluations;
evaluations = new StringBuilder();
public void giveGoldStar(){
  evaluations.append(LocalDate.now() + "Gold star");  // 这个还是可以变的
}

相关文章

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

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

  • 双11Java程序员书单推荐

    Java 《Java核心技术卷I》 《Java核心技术卷II》 《Java编程思想》 《Java并发编程实战》 《...

  • 2021书单

    2021-01《活着》《如何阅读一本书》2021-11《Java核心技术卷I》《Java核心技术卷II》2021-...

  • 对象与类

    对象与类 Tags: Java核心技术卷I 面向对象程序设计概述 面向对象程序设计简单OOP。 类类是构造对象的模...

  • java修炼书籍

    1,《java核心技术(卷1)》 2,《java核心技术(卷1)》 3, 《java学习指南(第四版)》 4,《e...

  • 推书:Java核心技术 卷1 基础知识 原书第10版

    推书:Java核心技术 卷1 基础知识 原书第10版 《Java核心技术卷I》虽然该书很厚,有700多页,但知识体...

  • JAVA自定义类《java核心技术卷I 4.3》

    1. 类定义形式 java简单类定义形式,如下: 在一个源文件中,只能有一个公有类(public修饰),但可以有任...

  • Java类加载器

    本文是对《Java核心技术 卷二》类加载器的一篇学习笔记。因为内容比较深奥,所以几乎都记下来了。 自定义类加载器 ...

  • Java核心知识

    Java核心语法 作者:springremember 书籍:《Java核心技术卷一》《Java核心技术卷二》 ja...

  • 记录一些书籍

    JAVA 基础 《Java核心技术·卷1:基础知识》《Java核心技术 卷2:高级特性》《Java8 实战》 并发...

网友评论

      本文标题:Java核心技术(卷I) 3、用户自定义类

      本文链接:https://www.haomeiwen.com/subject/iyfjxltx.html