5.学习了面向对象的程序设计,。
6.学习了java的类与对象,包括使用现有类、用户自定义类、对象构造方法参数等等。
7.学习了如何创建标准java类库中的类对象,如何编写自己的类,并完成相关例子的编写。
8.学习掌握了java中继承多态的概念和使用,了解了依赖、关联、聚合、组成关系。
类
[访问符] [修饰符] class <类名>{
[属性]
[方法]
}
类的构造方法
1)构造方法是一种特殊的方法,在对象被创建时用来初始化对象;
2)它具有和它所在的类完全一样的名字;
3)构造方法和类的方法类似,只不过构造方法没有返回类型;void
4)构造方法的任务是初始化一个对象的内部状态(一些初值或内存配置工作)。
5)系统在产生对象时会自动执行。
6)一个类可以有多个构造方法(重载),根据参数的不同决定执行哪一个
[<access>] <class_name> ([<argu_list>]){
语句;
}
构造器
package com.highgo.t626;
import java.util.Date;
import java.util.GregorianCalendar;
public class EqulsTest {
public static void main(String[] args)
{
Employee6 alice1 = new Employee6("Alice Adams", 75000, 1987, 12, 15);
Employee6 alice2 = alice1;
Employee6 alice3 = new Employee6("Bob Brandson", 75000, 1989, 10, 1);
Employee6 bob = new Employee6("Bob Brandson", 50000, 1989, 10, 1);
System.out.println("alice1 == alice2: " + (alice1 == alice2));
System.out.println("alice1 == alice3: " + (alice1 == alice3));
System.out.println("alice1.equals(alcie3): " + alice1.equals(alice3));
System.out.println("alice1.equals(bob)" + alice1.equals(bob));
System.out.println("bob.toString(): " + bob);
Manager2 car1 = new Manager2("Carl Cracker", 80000, 1987, 12, 15);
Manager2 boss = new Manager2("Carl Cracker", 80000, 1987, 12, 15);
boss.setBonus(5000);
System.out.println("boss.toString(): " + boss);
System.out.println("car1.equals(boss): " + car1.equals(boss));
System.out.println("alice1.hashCode(): " + alice1.hashCode());
System.out.println("alice3.hashCode(): " + bob.hashCode());
System.out.println("car1.hashCode(): " + car1.hashCode());
}
}
//3个实例域用来存放将要操作的数据,
//关键字private确保只有Employee类自身的方法能够访问这些实例域
//两个实例域本身就是对象,name域是String对象,hireDay是Date对象
class Employee6
{
//一个构造器
//构造器与类同名,在构造Employee类的对象时,构造器会运行,以便将实例域初始化为所希望的状态
//与其他方法不同,构造器,总伴随new操作符的执行,被调用
//而不能对一个已经存在的对象,调用构造器来达到重新设置实例域的目的
//不要在构造器中定义与实例域重名的局部变量
private String name;
private double salary;
private Date hireDay;
public Employee6(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();
}
// 4个方法,关键字public意味着任何类的任何方法都可以调用这些方法
//方法用于操作对象以及存取它们的实例域
//这三个是典型的访问器方法
//由于它们值返回实例域值,因此又称为域访问器
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public Date getHireDay()
{
return hireDay;
}
//将调用这个方法的对象的salary实例域设置为新值,新值为通过该方法得到的salary值
//raiseSalary方法中有两个参数
//第一个为隐式参数,是出现在方法名前的Employee类对象e.raiseSalary(5);
//第二个为显示参数,位于方法名后面括号中的数值double byPrecent,即后者出现在方法的声明中
public void raiseSalary(double byPercent)
{
double raise = salary * byPercent / 100;
salary += raise;
}
public boolean equals(Object otherObject)
{
if (this == otherObject) return true;
if (otherObject == null) return false;
if (getClass() != otherObject.getClass()) return false;
Employee6 other = (Employee6) otherObject;
return name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay);
}
public int hashCode()
{
return 7 * name.hashCode() + 11 * new Double(salary).hashCode() + 13 * hireDay.hashCode();
}
public String toString()
{
return getClass().getName() + "[name=" + name + ",salary=" + salary + ",hirDay=" + hireDay + "]";
}
}
class Manager2 extends Employee6
{
private double bonus;
public Manager2(String n, double s, int year, int month, int day)
{
super(n, s, year, month, day);
bonus = 0;
}
public double getSalary()
{
double baseSalary = super.getSalary();
return baseSalary + bonus ;
}
public void setBonus(double b)
{
bonus = b;
}
public boolean equals(Object otherObject)
{
if(!super.equals(otherObject)) return false;
Manager2 other = (Manager2) otherObject;
return bonus == other.bonus;
}
public int hashCode()
{
return super.hashCode() + 17 * new Double(bonus).hashCode();
}
public String toString()
{
return super.toString() + "[bonus=" + bonus + "]" ;
}
}
//3个实例域用来存放将要操作的数据,
//关键字private确保只有Employee类自身的方法能够访问这些实例域
//两个实例域本身就是对象,name域是String对象,hireDay是Date对象
//一个构造器
//构造器与类同名,在构造Employee类的对象时,构造器会运行,以便将实例域初始化为所希望的状态
//与其他方法不同,构造器,总伴随new操作符的执行,被调用
//而不能对一个已经存在的对象,调用构造器来达到重新设置实例域的目的
//不要在构造器中定义与实例域重名的局部变量
// 4个方法,关键字public意味着任何类的任何方法都可以调用这些方法
//方法用于操作对象以及存取它们的实例域
//这三个是典型的访问器方法
//由于它们值返回实例域值,因此又称为域访问器
//将调用这个方法的对象的salary实例域设置为新值,新值为通过该方法得到的salary值
//raiseSalary方法中有两个参数
//第一个为隐式参数,是出现在方法名前的Employee类对象e.raiseSalary(5);
//第二个为显示参数,位于方法名后面括号中的数值double byPrecent,即后者出现在方法的声明中