Java学习周记5

学习Java的第五周

继承继承继承继承。

Ch5Demo1


  1. 设计一个三角形 类Ch5Demo1来扩展Geometricobject类。这个类包括:
    (1)三个名为side1、side2、side3的double数据域表示这个三角形的三条边,它们默认值是1.0;
    (2)一个无参构造方法创建默认的三角形;
    (3)一个创建指定side1、side2、side3的三角形的构造方法;
    (4)所有三个数据域的访问器方法;
    (5)一个名为getArea()的方法返回这个三角形的面积;
    (6)一个名为getPerimeter()方法返回这个三角形的周长;
    (7)一个名为toString()的方法返回这个三角形的字符串描述;
    编写一个测试程序,提示用户输入三角形的三条边、颜色以及一个Boolean值表明该三角形是否填充。程序应该使用输入创建一个具有这些边并设置color和filled属性的三角形。程序应该显示面积、边长、颜色以及表明是否填充的真或假的值。
    GeometricObject代码如下:
public class GeometricObject {
	private String color = "white";
	private boolean filled;
	private java.util.Date dateCreated;

	public GeometricObject() {
		dateCreated = new java.util.Date();
	}

	public GeometricObject(String color, boolean filled) {
		dateCreated = new java.util.Date();
		this.color = color;
		this.filled = filled;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public boolean isFilled() {
		return filled;
	}

	public void setFilled(boolean filled) {
		this.filled = filled;
	}

	public java.util.Date getDateCreated() {
		return dateCreated;
	}

	public String toString() {
		return "created on " + dateCreated + "\ncolor: " + color
				+ " and filled: " + filled;
	}
}

题解如下:

算了,博主懒出新高度了,这题纯练手的简单题就不写题解了,有不明白的地方欢迎评论去留言。

水水水hhhhhhh…

Ch5Demo2


  1. 设计一个类Ch5Demo21(支票账户)和Ch5Demo22(储蓄账户)来扩展Ch3Demo5类(第三次作业第五题)。Ch5Demo21类包括:支票账户有一个透支限定额,但储蓄账户不能透支。创建Ch3Demo5、Ch5Demo21、Ch5Demo22的对象,然后调用它们的toString()方法。

支票账户

public class Ch5Demo21 extends Ch3Demo5{
	double overdraft = 0.0;//初始透支额
	
	boolean isoverdraft = false;//判断账户是否透支

	public Ch5Demo21() {

	}

	public void setOverdraft(double overdraft) {
		this.overdraft = overdraft;
	}
	
	public boolean isIsoverdraft() {
		if (getBalance() < 0) {
			isoverdraft = true;
		}
		return isoverdraft;
	}

	public void withDraw(double money) {
		double mybalance = getBalance();
		if (money >= mybalance) {
			if (money > mybalance + overdraft) {
				System.out.println("透支额不足!");
			} else {
				setBalance(mybalance - money);
			}
		} else {
			setBalance(mybalance - money);
		}
	}
	//test
	public static void main(String[] args) {
		Ch5Demo21 c=new Ch5Demo21();//创建一个透支帐户
		c.setBalance(1000);//设置帐户余额1000
		c.setOverdraft(500);//设置帐户可透支额是500
		
		c.withDraw(800);//取钱800元
		
		System.out.println(c.getBalance());
		c.withDraw(300);
		System.out.println(c.getBalance());
		System.out.println(c.isIsoverdraft());
		
		c.withDraw(500);
	}
}

储蓄账户

public class Ch5Demo22 extends Ch3Demo5{
	double interest;//利息
	
	int term;
	
	//设置存款期限
	public void setTerm(int year){
		term = year;
	}
	
	//计算利息
	public void getinterest(){
		interest = this.getBalance()*this.getAnnualInterestRate()*this.term;
		this.setBalance(getBalance()+interest);
	}
}

作者很短很短。。

Ch5Demo3


  1. 根据Ch3Demo5类(第三次作业第五题),设计出一个新的Ch5Demo3类:
    (1)添加一个String类型的新据域name来存储客户的名字;
    (2)添加一个新的构造方法,该方法创建一个具有指定名字、id和收支额的账户;
    (3)添加一个名为transactions的ArrayList类型的新数据域,用于为账户存储交易。每笔交易都是一个Transaction类的实例。Transaction类结构如下:
    -date java.util.Date
    -type char (W为存款,D为取款)
    -amount double
    -balance double
    -description String
    +Transaction(type: char,amout:double,balance:double,description:String)
    构造器和访问器
    (4)修改withdraw和deposit方法,向transactions数组线性表添加一笔交易。
    (5)其它所有属性和方法都和编程练习题Ch3Demo5类(第三次作业第五题)相同。
    编写一个测试程序,创建一个年利率为1.5%,收支额为1000,id为1122而名字为George的Ch5Demo3类的账户,向该账户存入30美元、40美元和50美元并从该账户中取出5美元、4美元、2美元。打印出账户清单,显示账户持有者名字、利率、收支额、和所有的交易。

package ch5;

import java.sql.Date;
import java.util.ArrayList;

class Transaction{
	Date date;
	char type;
	double amount;
	double balance;
	String description;
	public Transaction(char type, double amount, double balance, String description) {
		this.type = type;
		this.amount = amount;
		this.balance = balance;
		this.description = description;
		this.date = new Date(System.currentTimeMillis());
	}
	
	public char getType() {
		return type;
	}

	public void setType(char type) {
		this.type = type;
	}

	public double getamount() {
		return amount;
	}

	public void setamount(double amount) {
		this.amount = amount;
	}

	public double getBalance() {
		return balance;
	}

	public void setBalance(double balance) {
		this.balance = balance;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public String toString() {
		return "日期:"+date+"操作类型:"+type+"数量:"+amount+"余额:"+ balance+"操作员:"+ description+"\n";
	}
}

public class Ch5Demo3 {
	Transaction t;
	String id = "000";
	private String name;
	private double balance = 0;
	private double annualInterestRate = 0;
	private Date dateCreated;
	static ArrayList<Transaction> Transactions = new ArrayList<Transaction>();
	
	//创建默认帐户的无参构造方法
	public Ch5Demo3() {
		dateCreated = new Date(System.currentTimeMillis());
	}
	
	//创建带特定id和初始余额的帐户的有参构造方法
	public Ch5Demo3(String id, double balance) {
		this.id = id;
		this.balance = balance;
		this.dateCreated = new Date(System.currentTimeMillis()); //创建账户的时间
	}
	
	//具有指定名字、id和收支额的账户的构造方法
	public Ch5Demo3(String id, String name, double balance) {
	this.id = id;
	this.setName(name);
	this.balance = balance;
	this.dateCreated = new Date(System.currentTimeMillis());
}
	
	// 访问器和修改器
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public ArrayList<Transaction> getTransactions() {
		return Transactions;
	}

	public void setTransactions(ArrayList<Transaction> transactions) {
		Transactions = transactions;
	}
	

	// id的访问器
	public String getId() {
		return id;
	}

	// id的修改器
	public void setId(String id) {
		this.id = id;
	}

	// balance的访问器
	public double getBalance() {
		return balance;
	}

	// balance的修改器
	public void setBalance(double balance) {
		this.balance = balance;
	}

	// annualInterestRate的访问器
	public double getAnnualInterestRate() {
		return annualInterestRate;
	}

	// annualInterestRate的修改器
	public void setAnnualInterestRate(double annualInterestRate) {
		this.annualInterestRate = annualInterestRate;
	}

	// dateCreated的访问器
	public Date getDateCreated() {
		return dateCreated;
	}

	// 返回月利率的方法
	public double getMonthlyInterestRate() {
		return annualInterestRate / 12;
	}

	//取钱的方法
	public void withDraw(double money1) {
		if (balance >= money1) {
			balance -= money1;
			Transactions.add(new Transaction('D',money1,this.balance,"操作员一"));
		} else {
			System.out.println("余额不足!");
		}
	}

	//存钱的方法
	public void deposit(double money2) {
		balance += money2;
		Transactions.add(new Transaction('W',money2,this.balance,"操作员二"));
	}
	
	//test
	public static void main(String[] args) {
		Ch5Demo3 a = new Ch5Demo3("001","堃神",100000001);
		a.deposit(1000);
		a.withDraw(500);
		System.out.println(a.getName());
		System.out.println(a.getBalance());
		/*1.必须要先进行Transactions.add()操作才能打印输出!!
		 *2.先将ArrayList声明语句设置成static.
		 *否则
		 *报错报错报错
		 */
		System.out.println(Transactions);
	}
}

这一题,又要重写toString()函数,而且,因为题目冗长和这个ArrayList的原因,这道题花了我
三!个!小!时!
我废了!!——来自弱鸡的无病呻吟。

Ch5Demo4


在这里插入图片描述

(1)根据上图设计三个类Person、Student、Employee类,图中箭头为继承关系。
(2)设计一个测试类Test类,采用多态的工作原理分别输出“学生的工作是帮助老师参与学校的学生管理工作,提高综合素质”和输出“雇员工作是为了养活自己和家人”。


Person类

package ch5;

public abstract class Person {
	private String name;
	private int age;
	private String address;
	private String phone;
	
	public Person() {
		
	}

	public Person(String name, int age, String address, String phone) {
		this.name = name;
		this.age = age;
		this.address = address;
		this.phone = phone;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}
	
	public void work(){
		System.out.println("人类需要工作来体现人生价值");
	}
	
	public abstract void study();
	
}

Student类

package ch5;

public class Student extends Person{
	private String school;

	public Student(String name, int age, String address, String phone) {
		super(name, age, address, phone);
	}

	public String getSchool() {
		return school;
	}

	public void setSchool(String school) {
		this.school = school;
	}
	
	public void work(){
		System.out.println("学生的工作是帮助老师参加学校的学生管理工作,提高综合素质");
	}
	
	public void study(){
		System.out.println("全日制在宜春学院学习");
	}
}

Employee类

package ch5;

public class Employee extends Person{
	String office;

	public Employee(String name, int age, String address, String phone) {
		super(name, age, address, phone);
	}

	public String getOffice() {
		return office;
	}

	public void setOffice(String office) {
		this.office = office;
	}
	
	public void work(){
		System.out.println("雇员工作是为了养活自己和家人");
	}
	
	public void study(){
		System.out.println("在职学习也能学到知识");
	}
}

test4

package ch5;

public class test4{
	public static void main(String[] args) {	
		Person A = new Student("张三", 18, "江西省南昌", "13870589160");// 父类的引用指向子类的对象,实现多态
		Person B = new Employee("李四", 30, "江西省九江", "12345678910");// 父类的引用指向子类的对象,实现多态
		A.work();
		B.work();
	}
		
}

呵呵,,呵呵。

Ch5Demo5


5.设计一个扩展自抽象类GeometricObject 1的新类Ch5Demo5(圆),编写一个测试程序,提示输入圆的半径、颜色、一个是否填充的布尔值,程序根据输入信息创建一个圆的对象,程序显示面积、周长、颜色、是否被填充。GeometricObject 1代码如下:

package ch5;

import java.util.Date;

public abstract class GeometricObject1 {
	  private String color = "white";
	  private boolean filled;
	  private Date dateCreated;

	  protected GeometricObject1() {
	    dateCreated = new Date();
	  }

	  protected GeometricObject1(String color, boolean filled) {
	    dateCreated = new Date();
	    this.color = color;
	    this.filled = filled;
	  }

	  public String getColor() {
	    return color;
	  }

	  public void setColor(String color) {
	    this.color = color;
	  }

	  public boolean isFilled() {
	    return filled;
	  }

	  public void setFilled(boolean filled) {
	    this.filled = filled;
	  }

	  public java.util.Date getDateCreated() {
	    return dateCreated;
	  }

	  public String toString() {
	    return "created on " + dateCreated + "\ncolor: " + color +
	      " and filled: " + filled;
	  }

	  /** Abstract method getArea */
	  public abstract double getArea();

	  /** Abstract method getPerimeter */
	  public abstract double getPerimeter();

}


题解:

package ch5;

public class Ch5Demo5 extends GeometricObject1{
	private double radius;
	
	@Override
	public double getArea() {
		// TODO Auto-generated method stub
		return Math.PI*radius*radius;
	}

	@Override
	public double getPerimeter() {
		// TODO Auto-generated method stub
		return 2*Math.PI*radius;
	}

	public double getRadius() {
		return radius;
	}

	public void setRadius(double radius) {
		this.radius = radius;
	}

}

垃圾题。

总结

额,,,这周,大概除了Ch5Demo3都是水题吧,Demo4是Java的多态,其他的都是继承继承继承,比较简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值