练习一
题目
案例: (1)定义Student类,有4个属性: String name; int age; String school; String major; (2)定义Student类的3个构造器: - 第一个构造器Student(String n, int a)设置类的name和age属性; - 第二个构造器Student(String n, int a, String s)设置类的name, age 和school属性; - 第三个构造器Student(String n, int a, String s, String m)设置类的name, age ,school和major属性; (3)在main方法中分别调用不同的构造器创建的对象,并输出其属性值。
代码
package chapter06_oop1_teacher.src.com.atguigu08.constructor.exer1; public class Student { String name; int age; String school; String major;//专业 public Student(String n,int a){ name = n; age = a; } public Student(String n, int a, String s){ name = n; age = a; school = s; } Student(String n, int a, String s, String m){ name = n; age = a; school = s; major = m; } public String getInfo(){ return "name = " + name + ",age = " + age + ",school = " + school + ", major = " + major; } }
package chapter06_oop1_teacher.src.com.atguigu08.constructor.exer1; /** * ClassName: StudentTest * Description: * * @Author 尚硅谷-宋红康 * @Create 16:45 * @Version 1.0 */ public class StudentTest { public static void main(String[] args) { Student s1 = new Student("刘强东",48,"中国人民大学","社会学"); System.out.println(s1.getInfo()); Student s2 = new Student("奶茶妹妹",28,"清华大学"); System.out.println(s2.getInfo()); } }
练习二
题目
案例: 编写两个类,TriAngle和TriAngleTest,其中TriAngle类中声明私有的底边长base和高height, 同时声明公共方法访问私有变量。此外,提供类必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。
代码
package chapter06_oop1_teacher.src.com.atguigu08.constructor.exer2;
/**
* ClassName: TriAngle
* Description:
*
* @Author 尚硅谷-宋红康
* @Create 16:49
* @Version 1.0
*/
public class TriAngle {
//属性
private double base;//底边长
private double height;//高
public double getBase(){
return base;
}
public void setBase(double b){
base = b;
}
public double getHeight(){
return height;
}
public void setHeight(double h){
height = h;
}
public TriAngle(){
}
public TriAngle(double b,double h){
base = b;
height = h;
}
//...
//求面积的方法
public double findArea(){
return base * height / 2;
}
}
package chapter06_oop1_teacher.src.com.atguigu08.constructor.exer2;
/**
* ClassName: TriAngleTest
* Description:
*
* @Author 尚硅谷-宋红康
* @Create 16:52
* @Version 1.0
*/
public class TriAngleTest {
public static void main(String[] args) {
//创建TriAngle的实例1
TriAngle t1 = new TriAngle();
t1.setHeight(2.3);
t1.setBase(3.4);
System.out.println("面积为:" + t1.findArea());
//创建TriAngle的实例2
TriAngle t2 = new TriAngle(2.4,4.5);
System.out.println("底边长为:" + t2.getBase());
System.out.println("高为:" + t2.getHeight());
System.out.println("面积为:" + t2.findArea());
}
}
练习三
题目
案例: 1、写一个名为Account的类模拟账户。该类的属性和方法如下图所示。 该类包括的属性:账号id,余额balance,年利率annualInterestRate; 包含的构造器:自定义 包含的方法:访问器方法(getter和setter方法),取款方法withdraw(),存款方法deposit()。 提示:在提款方法withdraw中,需要判断用户余额是否能够满足提款数额的要求,如果不能,应给出提示。 2、创建Customer类。 a. 声明三个私有对象属性:firstName、lastName和account。 b. 声明一个公有构造器,这个构造器带有两个代表对象属性的参数(f和l) c. 声明两个公有存取器来访问该对象属性,方法getFirstName和getLastName返回相应的属性。 d. 声明setAccount 方法来对account属性赋值。 e. 声明getAccount 方法以获取account属性。 3、写一个测试程序。 (1)创建一个Customer ,名字叫 Jane Smith, 他有一个账号为1000,余额为2000元,年利率为 1.23% 的账户。 (2)对Jane Smith操作。 存入 100 元,再取出960元。再取出2000元。 打印出Jane Smith 的基本信息: 成功存入 :100.0 成功取出:960.0 余额不足,取款失败 Customer [Smith, Jane] has a account: id is 1000, annualInterestRate is 1.23%, balance is 1140.0 代码
Account
package chapter06_oop1_teacher.src.com.atguigu08.constructor.exer3;
public class Account {
private int id;//账号
private double balance; //余额
private double annualInterestRate;//年利率
public Account(int i, double b, double a) {
id = i;
balance = b;
annualInterestRate = a;
}
public void setId(int i) {
id = i;
}
public int getId() {
return id;
}
public void setBalance(double b) {
balance = b;
}
public double getBalance() {
return balance;
}
public void setAnnualInterestRate(double a) {
annualInterestRate = a;
}
public double getAnnualInterestRate() {
return annualInterestRate;
}
//取钱
public void withdraw(double amount){
if(amount <= balance && amount > 0){
balance -= amount;
System.out.println("成功取出:" + amount);
}else{
System.out.println("余额不足,取款失败");
}
}
//存款
public void deposit(double amount){
if(amount > 0){
balance += amount;
System.out.println("成功存入:" + amount);
}
}
}
Customer
package chapter06_oop1_teacher.src.com.atguigu08.constructor.exer3;
public class Customer {
private String firstName;
private String lastName;
private Account account;
public Customer(String f,String l){
firstName = f;
lastName = l;
}
public String getFirstName(){
return firstName;
}
public String getLastName(){
return lastName;
}
public void setAccount(Account a){
account = a;
}
public Account getAccount(){
return account;
}
}
package chapter06_oop1_teacher.src.com.atguigu08.constructor.exer3;
public class CustomerTest {
public static void main(String[] args) {
//创建Customer实例
Customer customer = new Customer("Jane","Smith");
// Account account = new Account(1000,2000,0.0123);
// customer.setAccount(account);
//或
customer.setAccount(new Account(1000,2000,0.0123));
//针对于客户的账户进行取钱、存钱的操作
customer.getAccount().deposit(100);
customer.getAccount().withdraw(960);
customer.getAccount().withdraw(2000);
//输出客户信息
//Customer [Smith, Jane] has a account: id is 1000,
// annualInterestRate is 1.23%, balance is 1140.0
System.out.println("Customer [" + customer.getLastName() + "," + customer.getFirstName() +
"] has a account:id is " + customer.getAccount().getId() + ",annualInterestRate is " +
customer.getAccount().getAnnualInterestRate()*100 + "%,balance is " +
customer.getAccount().getBalance());
/*
* 关于匿名对象
*
* 1. 匿名对象往往只能被调用一次
* 2. 匿名对象常常作为实参传递给方法的形参。
* */
new Account(1001,2000,0.0123).withdraw(1000);
System.out.println(new Account(1001, 2000, 0.0123).getBalance());
int num = 10;
}
}



















