zoukankan      html  css  js  c++  java
  • java===java基础学习(7)---用户自定义类

    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()

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

  • 相关阅读:
    re模块---正则表达式
    configparser 配置文件模块
    svn服务器配置
    python中的list的方法
    python正则表达式
    os模块
    高阶函数
    递归
    推导式
    [转]Java中的多线程你只要看这一篇就够了
  • 原文地址:https://www.cnblogs.com/botoo/p/8708350.html
Copyright © 2011-2022 走看看