Day 006 p440

Java中的三大变量

 

image-20210413135733523

this

this 大部分可以省略

this 区分局部变量和实例变量‘ (为了见名知意 同名的时候)

在实例方法中,为了区分局部变量和实例变量中是不能省的


this 除了使用在实例方法中,还能用在构造方法中

以后写代码都要封装,属性私有化,对外提供seeter and getter

class Date{
   private int year;
   //年
   private int mouth;
   //月
   private int day;
   //日
   // 无参调用构造方法
   public Data(){
       this(1970,1,1);
  }
   public Date(int year ,int mouth,int day){
       this.year = year;
       this.mouth = mouth;
       this .day = day ;
           
  }
   public  void setYear(int Year){
       this.year = year;
       
  }
   public int getYear(){
       return year;
  }
   
  }
}

this(实际参数列表)

上面的代码就是

新语法:通过当前的构造方法去调用另一个本类的构造方法,

可以使用以下的语法格式

this(实际参数列表)

 

this() 的调用必须是构造方法的第一行

 

作用 : 代码的重复使用


总结:this

  • 可以使用在实例方法中, 也可以使用在构造方法中,不能使用在静态方法中

  • 出现在实例方法中,代表的时当前的对象

  • 大部分的情况下可以省略。但是区分局部变量和实例变量的时候不能省略

  • this()这种代码只能出现在构造方法的第一行,表示当前构造方法调用本类其他的方法,目的是代码复用


一个银行的账号设置

public class bandmoney {
   public static void main(String[] args) {
       Account a =new Account("2018214473",10000000,0.0314);
       Customer c=new Customer("zhang junlong",a);
       c.getAct().deposit(1000);
       c.getAct().withdraw(9555);
       c.getAct().withdraw(1000000000);
  }
}
class  Account {
   private String ID;
   //账号id
   private double  balance;
   //账号余额
   private double annual;
   //年利率
   // 构造方法
   public  Account(){

  }

   public Account(String id,double balance,double annual){
       this.ID=id;
       this.balance =balance;
       this.annual =annual;
  }
   public void setID(String id)
  {
       this.ID=id;
  }
   public  String getID() {
   return  this.ID;
  }
   public void setBalance(double balance) {

       this.balance=balance;
  }
   public  double getBalance() {

       return  this.balance;
  }
   public void setAnnual (double annual){
       this.annual = annual;


  }
   public  double getAnnual () {

       return annual;
  }
   //方法 存款
   public  void deposit(double money)
  {
       this.setBalance(this.getBalance()+money);
       System.out.println("成功存入"+money);
  }
   //方法   取钱
   public void withdraw(double money){
       if(this.getBalance()>money){
           this.setBalance(this.getBalance()-money );
           System.out.println("成功取出来了"+money+"的钱");
      }
       else {System.out.println("余额不足 取不了钱");

               return;
      }}

}
class Customer{
   private String name;
   private  Account act;
   public Customer(){}
   public Customer(String name,Account act)
  {
           this.act=act;
           this.name=name;
      }
       public void setName(String name){
           this.name=name;
      }
       public String getName(){
           return name;
      }
       public void setAct(Account act){
           this.act = act;
  }
   public  Account getAct(){
       return  act;
  }
}

所有实例相关的都是先创建对象,通过引用。来访问

所有静态相关的都是直接用类名。的方式来访问

main 方法是静态的,jvm调用main方法的时候直接采用 类名。 的方式

所以main中没有this。

局部变量访问是没有 XXX.的

在本类中可以省 会补上this。 或者 类名。

 


大结论:只要负责调用的方法a和被调用的方法b在同一个类当中。

this。 可以省略

类名。 可以省略

继承

代码臃肿没有得到重复利用的时候

使用继承来解决

父类子类 extends

子类 extends 父类

继承的作用

基本作用:子类继承父类,代码可以得到复用

重要的主要作用: 因为有了继承的关系,才有了后期的方法覆盖和多态机制。

class A{}

class B extend A {}

superclass 父类 超类 基类

subclass 子类 派生类,扩展类

Java中不支持多继承 c++可以

c++支持多重继承

间接继承

  • Java中规定 ,子类继承父类,除了构造方法不能继承之外,剩下的都可以继承

但是私有的属性无法在子类中直接访问,可以通过间接的方式访问。

默认继承object

Object是所有类的超类

继承的缺点 耦合度太高,父类修改,子类受牵连。

子类继承父类以后,使用父类方法

 

 

害,在这边很多时候都施展不开。

等下有课,今天早点回去了。最近的上课进程慢了好多。

19点的课

 

posted @ 2021-04-13 17:56  各人blanknote  阅读(305)  评论(0)    收藏  举报