Java基础学习(二)2019.6.26

这篇博客详细介绍了Java的面向对象编程,包括类与对象的概念,如何创建和使用标准类库中的类对象,以及如何编写自定义类。此外,还深入探讨了构造方法的用途和规则,以及类的继承多态特性。内容涵盖类的定义、构造方法的执行时机、构造方法的重载,以及访问器方法等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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,即后者出现在方法的声明中


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值