java面向对象学习day07

每一个不曾起舞的日子,都是对生命的辜负。

java面向对象学习day07

一、Test

1、属性赋值

1.1、先后顺序

  • 默认初始化

  • 显式初始化

  • 构造器中初始化

  • 通过“对象.方法"或”对象.属性“的方式赋值

1.2、实例

 package Object.day07;
 ​
 public class UserTest {
     public static void main(String[] args) {
         User u = new User();
         System.out.println(u.age);
 ​
         User u1 = new User(2);
         u1.setAge(3);
         System.out.println(u1.age);
 ​
     }
 }
 ​
 class User{
     String name;
     int age = 1;
 ​
     public User(){
 ​
     }
     public User(int a){
         age = a;
     }
 ​
     public void setAge(int a){
         age = a;
     }
 }

 

1.3、JavaBean

所谓JavaBean,指符合如下标准的Java类:

  • 类是公共的

  • 有一个无参的公共的构造器

  • 有属性,且有对应的get、set方法

二、this关键字

1、this关键字的使用:

  • this可以用来修饰:属性、方法、构造器

  • this可以理解为当前对象 或当前正在创建的对象(构造器)

2、说明

在类的方法中,我们可以使用“this.属性”或“this.方法''的方式,调用当前对象的属性或方法。但是,通常情况下,我们多选择省略”this.“。特殊情况下,如果方法的形参和类的属性同名是,我们必须显式的使用”this.变量“的方式,表明此变量是属性,而非形参。

简言之,若出现重名,便可用this加以区分。

3、this调用构造器

1、我们在类的构造器中,可以显式的使用“this(形参列表)”方式,调用本类中指定的其他构造器。

2、构造器中不能通过“this(形参列表)”方式调用自己

3、如果一个类中有n个构造器,则最多有n-1构造器中使用了“this(形参列表)”

4、规定:“this(形参列表)”必须声明在当前构造器的首行

5、构造器内部,最多只能声明 一个“this(形参列表)”,用来调用其他的构造器

实例:

 package Object.day07;
 ​
 public class PersonTest {
     public static void main(String[] args) {
         //Person p1 = new Person();
         //p1.setAge(1);
         //System.out.println(p1.getAge());
         Person p2= new Person("yang");
         System.out.println(p2.getName());
 ​
         Person p3 = new Person("ting",45);
         System.out.println(p3.getAge());
     }
 }
 ​
 class Person{
     private String name;
     private int age;
 ​
     public Person(){
         String info = "缓缓飘落的枫叶像思念";
         System.out.println(info);
     }
     public Person(String name){
         this();
         this.name = name;
     }
     public Person(int age){
         this();
         this.age = age;
     }
     public Person(String name,int age){
         this(age);
         this.name = name;
         //this.age = age;
     }
 ​
     public void setName(String name){
         this.name = name;
     }
     public String getName(){
         return this.name;
     }
 ​
     public void setAge(int age){
         this.age = age;
     }
     public int getAge(){
         return this.age;
     }
 ​
     public void eat(){
         System.out.println("我爱吃饭");
         this.study();
     }
     public void study(){
         System.out.println("我爱学习");
     }
 }

三、package关键字

1、package关键字的使用:

  • 为了更好地实现项目中类的管理,提供包的概念

  • 使用package声明类或接口所属的包,声明在源文件的首行

  • 包属于标识符,遵循标识符的命名规则、规范(xxxyyyzzz)、“见名知意”

  • 每 “.” 一次,就代表一层文件目录

2、补充:

  • 同一个包下,不能命名同名的接口、类。

  • 不同的包下,可以命名同名的接口、类。

3、JDK中主要的包

 

4、MVC设计模式

 

 

四、Test2.0

1、Test one

题目:

 

代码:

TriAngle类:

 package Object.day07.test.triangle;
 ​
 public class TriAngle {
     private double base;
     private double height;
 ​
     public TriAngle(){
 ​
     }
     public TriAngle(double b,double h){
         base = b;
         height = h;
     }
 ​
     public void setBase(double b){
         base = b;
     }
     public double getBase(){
         return base;
     }
 ​
     public void setHeight(double h){
         height = h;
     }
     public double getHeight(){
         return height;
     }
 }

TriAngleTest类:

 
package Object.day07.test.triangle;
 ​
 import Object.day07.test.triangle.TriAngle;
 ​
 public class TriAngleTest {
     public static void main(String[] args) {
         TriAngle t1 = new TriAngle();
         t1.setBase(2.0);
         t1.setHeight(2.4);
         System.out.println("base : "+t1.getBase()+ "   height : "+ t1.getHeight());
 ​
         TriAngle t2 = new TriAngle(3.4,6.7);
         System.out.println("base : "+t2.getBase()+ "   height : "+ t2.getHeight());
 ​
     }
 }

程序运行结果:

 

2、Test two

题目:

 

代码:

Boy类:

 package Object.day07.test.marry;
 ​
 public class Boy {
     private String name;
     private int age;
 ​
     public Boy(){
 ​
     }
     public Boy(String name){
         this.name =name;
     }
     public Boy(String name,int age){
         this.name = name;
         this.age = age;
     }
 ​
     public void setName(String name){
         this.name = name;
     }
     public String getName(){
         return name;
     }
 ​
     public void setAge(int age){
         this.age = age;
     }
     public int getAge(){
         return age;
     }
 ​
     public void marry(Girl girl){
         System.out.println("我想娶"+girl.getName());
     }
     public void shout(){
         if(this.age >= 22){
             System.out.println("你可以去结婚啦!");
         }else{
             System.out.println("你还不可以结婚哦~");
         }
     }
 }

Girl类:

 
package Object.day07.test.marry;
 ​
 public class Girl {
     private String name;
     private int age;
 ​
     public Girl(){
 ​
     }
     public Girl(String name,int age){
         this.name = name;
         this.age = age;
     }
 ​
     public void setName(String name){
         this.name = name;
     }
     public String getName(){
         return name;
     }
 ​
     public void marry(Boy boy){
         System.out.println("我想嫁给"+boy.getName());
         boy.marry(this);
     }
 ​
     public int compare(Girl girl){
         return this.age - girl.age;
     }
 }

BoyGirlTest类:

 
package Object.day07.test.marry;
 ​
 import Object.day07.test.marry.Boy;
 import Object.day07.test.marry.Girl;
 ​
 public class BoyGirlTest {
     public static void main(String[] args) {
         Boy boy = new Boy("唐伯虎",20);
         boy.shout();
 ​
         Girl girl = new Girl("秋香",18);
         girl.marry(boy);
 ​
         Girl girl1 = new Girl("翠花",19);
         int compare = girl.compare(girl1);
         if(compare > 0){
             System.out.println(girl1.getName()+"大");
         }else if(compare < 0){
             System.out.println(girl.getName()+"大");
         }else{
             System.out.println("一样大");
         }
     }
 }

程序运行结果:

 

3、Test three

题目:

 

  

代码:

Account类

 
package Object.day07.test.account;
 ​
 public class Account {
     private int id;
     private double balance;
     private double annualInterestRate;
 ​
     public Account(int id,double balance,double annualInterestRate){
         this.id = id;
         this.balance = balance;
         this.annualInterestRate = annualInterestRate;
     }
 ​
     public int getId(){
         return id;
     }
     public void setId(int id){
         this.id = id;
     }
     public double getBalance(){
         return balance;
     }
     public void setBalance(double balance){
         this.balance = balance;
     }
     public double getAnnualInterestRate(){
         return annualInterestRate;
     }
     public void setAnnualInterestRate(double annualInterestRate){
         this.annualInterestRate = annualInterestRate;
     }
 ​
     public void withdraw(double amount){
         if(balance < amount){
             System.out.println("余额不足,取款失败");
             return;
         }
         balance -= amount;
         System.out.println("成功取出:"+amount);
     }
     public void deposit(double amount){
         if(amount > 0){
             balance += amount;
             System.out.println("成功存入:"+amount);
         }
     }
 }

Customer类:

 package Object.day07.test.account;
 ​
 import Object.day07.test.account.Account;
 ​
 public class Customer {
     private String firstName;
     private String lastName;
     private Account account;
 ​
     public Customer(String firstName,String lastName){
         this.firstName =firstName;
         this.lastName = lastName;
     }
     public String getFirstName(){
         return firstName;
     }
     public String getLastName(){
         return lastName;
     }
     public Account getAccount(){
         return account;
     }
     public void setAccount(Account account){
         this.account = account;
     }
 }

CustomerTest类:

 package Object.day07.test.account;
 ​
 public class CustomerTest {
     public static void main(String[] args) {
         Customer cust = new Customer("Jane","Smith");
 ​
         Account acct = new Account(1000,2000,0.0123);
         cust.setAccount(acct);
 ​
         cust.getAccount().deposit(100);
         cust.getAccount().withdraw(366);
         cust.getAccount().withdraw(2366);
     }
 }

程序运行结果:

 

4、Test four

题目:

 

 

 

代码:

Accout1类:

 
package Object.day07.test.account2;
 ​
 public class Account1 {
 ​
     private double balance;
 ​
     public Account1(double init_balance){
         this.balance = init_balance;
     }
 ​
     public double getBalance(){
         return balance;
     }
 ​
     public void deposit(double amt){
         if(amt > 0){
             this.balance += amt;
             System.out.println("存钱成功~");
         }
     }
 ​
     public void withdraw(double amt){
         if(amt <= balance){
             this.balance -= amt;
             System.out.println("取钱成功~");
         }else{
             System.out.println("你账户里的钱不够啦~");
         }
     }
 }

Customer类:

 
package Object.day07.test.account2;
 ​
 import Object.day07.test.account.Account;
 ​
 public class Customer {
     private String firstName;
     private String lastName;
     private Account1 account;
 ​
     public Customer(String f,String l){
         this.firstName = f;
         this.lastName = l;
     }
 ​
     public String getFirstName(){
         return firstName;
     }
     public String getLastName(){
         return lastName;
     }
     public Account1 getAccount(){
         return account;
     }
     public void setAccount(Account1 acct){
         this.account = acct;
     }
 }

Bank类:

 
package Object.day07.test.account2;
 ​
 public class Bank {
     private Customer[] customers;
     private int numberOfCustomer;
 ​
     public Bank(){
         customers = new Customer[10]; //不要忘记了初始化对象数组
     }
 ​
     public void addCustomer(String f,String l){
 //      int i =0;
         Customer c = new Customer(f,l);
 //      this.customer[i] = c;
 //      numberOfCustomer = ++i;
         customers[numberOfCustomer++] = c;
     }
 ​
     public int getNumberOfCustomer(){
         return numberOfCustomer;
     }
 ​
     public Customer getCustomer(int index){
 //      return customers[index];  //考虑问题不够周全
         if(index >= 0 && index < numberOfCustomer){
             return customers[index];
         }
         return null;
     }
 }

BankTest类:

 
package Object.day07.test.account2;
 ​
 public class BankTest {
     public static void main(String[] args) {
         Bank bank = new Bank();
         bank.addCustomer("Jane","smith");
 ​
         bank.getCustomer(0).setAccount(new Account1(2000));
         bank.getCustomer(0).getAccount().withdraw(500);
 ​
         double balance = bank.getCustomer(0).getAccount().getBalance();
         System.out.println("客户:" + bank.getCustomer(0).getFirstName() + "的账户余额为:" +balance);
         System.out.println("************************");
 ​
         bank.addCustomer("立万","扬名");
         System.out.println("银行客户的个数为:" + bank.getNumberOfCustomer());
     }
 }

程序运行结果:

 

内存解析:

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值