package testbotoo;
import java.util.*; public class EmployeeTest
{
public static void main(String[] args)
{
Employee[] staff = new Employee[3];
staff[0] = new Employee("liming", 75000, 1987, 12, 15);
staff[1] = new Employee("xiaoming", 70000, 1999, 12, 12);
staff[2] = new Employee("xiaoli", 20000, 2001, 12, 23); for (Employee e :staff) // e---Element (在集合中使用,因为集合中存放的是元素),这里和python中的i一样,for i in list: i.raiseSalary(5)
e.raiseSalary(5); for (Employee e :staff)
System.out.println("name="+e.getName()+",salary="+e.getSalary()+",hireDay="+e.getHireDay()); } } class Employee{ private String name;
private double salary;
private Date hireDay; public Employee(String n, double s, int year, int month, int day){
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month -1, day);
hireDay = calendar.getTime();
} public String getName(){
return name;
} public double getSalary(){
return salary;
} public Date getHireDay(){
return hireDay;
} public void raiseSalary(double byPrecent){
double raise = salary * byPrecent / 100;
salary += raise;
} }

Employee类包含一个构造器和4个方法:

public Employee(String n, double s, int year, int month, int day)

public String getName()

public double getSalary()

public Date getHireDay()

public void raiseSalary( double byPrecent)

这个类的所有方法都被标记为public, 关键字public意味着任何类的任何方法都可以调用这些个方法(共有四种访问级别)

实例域,强烈建议实例域标记为private:

private String name;
private double salary;
private Date hireDay;

构造器,构造器和类同名,在构造Employee类的对象时,构造器会运行,以便将实例域初始化为所希望的状态!

public Employee(String n, double s, int year, int month, int day){
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month -1, day);
hireDay = calendar.getTime();
}
  1. 构造器与类同名
  2. 每个类可以有一个以上的构造器
  3. 构造器可以有0个,1个或者多个参数
  4. 构造器没有返回值
  5. 构造器总是伴随着new操作一起调用

隐式参数与显示参数:

  raiseSalary 方法有两个参数,第一个为隐式参数,出现在方法名前的Employee类对象。第二个参数位于方法名后面括号中的数值,这是一个显式参数

  显示参数明显的列在方法声明中的,例如double byPrecent

  在每一个方法中,关键字this表示隐式参数。如果需要,可以使用这样的方式编写:

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

封装的优点:

  getName(), getSalary(), getHireDay()

都是典型的访问器方法,由于只返回实例域值,因此又称域访问器。

java===java基础学习(7)---用户自定义类的更多相关文章

  1. Java【基础学习】之暴力求素数【用数组返回】

    Java[基础学习]之暴力求素数[用数组返回] */ import java.util.*; public class Main{ public static void main(String[] a ...

  2. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

  3. JAVA多线程基础学习一:基础知识

    我们知道多线程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 一.线程基本概念 1 线程:进程中负责程序执行的执行单元(执行 ...

  4. Java语法基础学习DaySeventeen(多线程续)

    一.线程的特点 1.线程的分类 java中的线程分为两类:守护线程和用户线程.唯一的区别是判断JVM何时离开. 守护线程是用来服务用户线程的,通过在start()方法前调用Thread.setDaem ...

  5. Java之基础学习(数据类型、运算符、分支语句和循环语句)

    在工作用得比较多的是shell和python编程,对于java以前也学习过,使用很少,这次借朋友推荐的java视频教程来温习下. 也是因为现在很多开源测试工具使用java编写的,学习一下更有助于测试工 ...

  6. Java语法基础学习DayEighteen(常用类)

    一.String类 1.特点 String代表不可变的字符序列,底层用char[]存放. String是final的. 2.内存解析 3.常用方法 int length() char charAt(i ...

  7. java基础学习总结——Object类

    一.Object类介绍

  8. Java语法基础学习DayThirteen(枚举类和注解)

    一.枚举类 1.概述:即一个类中只能有有限个对象,若只有一个对象,则可以作为单例模式的一种实现. 2.自定义枚举类(JDK1.5以前这么做) //枚举类 class Season{ //1.提供类的属 ...

  9. Java入门基础学习,成为一个Java程序员的必备知识

    引言 众所周知,Java是一种面向对象的编程语言.您可以在Windows操作系统上编写Java源代码,而在Linux操作系统上运行编译后的字节码,而无需修改源代码. 数据类型 Java 有 2 种数据 ...

  10. Java语法基础学习DaySeven

    ---恢复内容开始--- 一.包装类——Wrapper 1.定义:针对八种基本数据类型定义相应的引用类型——包装类(封装类) boolean——Boolean          byte——Byte ...

随机推荐

  1. 了解Solr

    Solr 简 介 采用Java开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功 ...

  2. BZOJ5466 NOIP2018保卫王国(倍增+树形dp)

    暴力dp非常显然,设f[i][0/1]表示i号点不选/选时i子树内的答案,则f[i][0]=Σf[son][1],f[i][1]=a[i]+Σmin(f[son][0],f[son][1]). 注意到 ...

  3. 【题解】Atcoder AGC#01 E-BBQ Hard

    计数题萌萌哒~ 这道题其实就是统计 \(\sum_{i=1}^{n}\sum_{j=i+1}^{n}C\binom{a[i] + a[j]}{a[i] + a[j] + b[i] + b[j]}\) ...

  4. [HEOI2016/TJOI2016]序列 CDQ分治

    ---题面--- 题解: 首先我们观察一下,如果一个点对(j, i), 要符合题中要求要满足哪些条件? 首先我们设 j < i 那么有: j < i max[j] < v[i] v[ ...

  5. POJ3621:Sightseeing Cows——题解

    http://poj.org/problem?id=3621 全文翻译参自洛谷:https://www.luogu.org/problemnew/show/P2868 题目大意:一个有向图,每个点都有 ...

  6. BZOJ1834:[ZJOI2010]网络扩容——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1834 https://www.luogu.org/problemnew/show/P2604#sub ...

  7. HDU.3342 Legal or Not (拓扑排序 TopSort)

    HDU.3342 Legal or Not (拓扑排序 TopSort) 题意分析 裸的拓扑排序 根据是否成环来判断是否合法 详解请移步 算法学习 拓扑排序(TopSort) 代码总览 #includ ...

  8. 使用PowerDesigner建模

    一.使用PowerDesigner建模 在数据库概念设计中已经分析了本系统中主要的数据应实体对象,通过这些实体可以得出数据表结构的基本模型,最终实施到数据库中, 形成完整的数据结构.本系统将使用Pow ...

  9. 【IntelliJ IDEA 12使用】导入外部包

    以前用eclipse,现在用IntelliJ IDEA,发现它确实是个很不错的工具. 用IntelliJ IDEA12这个版本导入外部JAR包,这样来操作,打开Project Structure,在m ...

  10. <audio>标签HTML5音乐播放器

    <audio>标签:用于在文档中表示音频内容.利用它,你可以在你的个人网站上放一首你喜欢的歌.    <audio src="music.mp3">< ...