this关键字的使用、package、UML图、import等关键字;

 

1、Java中,this关键字比较难,他的作用域和其词义很接近。

       1)、在方法内部使用,即这个方法所属对象的引用;

       2)、在构造器内部使用,表示该构造器正在初始化的对象。

2this.name=name;  //赋值号左边带有this.的base是当前正在创建的对象的属性,赋值号后边的name是形参;

       this.name=name;    也可书写为:   this(name);         //效果一致;

       this();可以用来显示的调用当前类的重载的指定的构造器。

       

3、this:

   1)、可以用来修饰属性、方法、构造器

    2)、this理解为当前对象或当前正在创建的对象

3)、可以在构造器中通过"this(形参)"的方式显示的调用当前重载的指定的构造器

             要求:(1)、在构造器内部this();必须声明在首行;

                     (2)、若一个类中有n个构造器,那么最多有n-1个构造器使用了this(形参);

一、Person(人)的类:

package com.atguigu.java;

/*

 * this:

 * 1、可以用来修饰属性、方法、构造器

 *  2、this理解为当前对象或当前正在创建的对象

 * 3、可以在构造器中通过"this(形参)"的方式显示的调用当前重载的指定的构造器

 *      要求:1、在构造器内部this();必须声明在首行;

 *           2、若一个类中有n个构造器,那么最多有n-1个构造器使用了this(形参);

 * */

public class TestPerson {

    public static void main(String[] args) {

        Person p1=new Person();

        p1.setAge(12);

        p1.show();

       

        p1.setName("John");    //此处p1调用的setName,因而p1就是this。

        p1.show();

    }

}

class Person{

    private String name;

    private int age;

    //setters & getters方法

    public String getName() {

        return name;

    }

    public void setName(String name) {

//      //这样赋值把两边的都看为是形参name,而没有属性name的事;age这样赋值出现的问题一样。

//      name = name;   //赋值号左边的name是属性中的name(即private定义的属性)

   

        //解决方案

        this.name=name; //谁调setName谁就是this;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    //以下为构造函数

    public Person(){

   

    }

    public Person(String name) {

        this.name=name;

    }

    public Person(String name,int age) {

        this.name=name;

        this.age=age;

    }

    public void eat() {

        System.out.println("吃");

    }

    public void drink() {

        System.out.println("喝");

    }

    public void play() {

        System.out.println("玩");

    }

    public void show() {

        System.out.println("姓名:"+name+";年龄:"+age); //此处name和age前也有this.,只是省略了。

    }

}

二、计算三角形面积程序代码:

package com.atguigu.java;

/*

 * 编写两个类:TriAngle和TestTriAngle,其中TriAngle中声明私有的底边长base和高height,

 * 同时声明公共方法访问私有变量,另一个类中使用这些公共方法,计算三角形面积。

 *

 *

 * */

public class TestTriAngle {//Angle:角    Angel:天使

    public static void main(String[] args) {  //main函数修饰符写为private的话,不会显示任何结果

        // TODO Auto-generated method stub

        TriAngle t=new TriAngle();

        t.setBase(3.0); t.setHeight(4.0);

        t.info();

        System.out.println("**************************");

    }

}



class TriAngle{    //

    private double base;

    private double height;

   

    public TriAngle(){

        //此处this.表示当前正在创建的对象的属性;

        this.base=1.0;

        this.height=1.0;  

    }

    public TriAngle(double base,double height) {

        //赋值号左边带有this的是当前对象的属性,赋值号后边的是形参;

        this.base=base;

        this.height=height;

    }

   

    public void setBase(double b) {

        base=b;

    }

    public void setHeight(double height) {

        this.height=height;    //形参名与属性名同名的情况,赋值号左边的是属性名(需要加上this.),右边的是形参名;

    }

    public double getBase() {

        return base;

    }

    public double getHeight(){

        return height;

    }

   

    public void info() {

        System.out.println("base:"+this.base+",height:"+this.height);

        System.out.println(this.area());

    }

    public double area() {

        return (base*height)/2;

    }

}

三、this关键字习题一:

package com.atguigu.exercise;



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) {

            balance-=amount;

            System.out.println("成功取出:"+amount);

        }else {

            System.out.println("余额不足,取款失败!");

        }

    }

    //存款

    public void deposit(double amount) {

        balance+=amount;

        System.out.println("成功存入:"+amount);

    }

}

 

package com.atguigu.exercise;



public class Customer {

    private String firstName;

    private String lastName;

    private Account account;

    public Customer(String f, String l) {

        this.firstName = f;

        this.lastName = l;

    }

    public Account getAccount() {

        return account;

    }

    public void setAccount(Account account) {

        this.account = account;

    }

    public String getFirstName() {

        return firstName;

    }

    public String getLastName() {

        return lastName;

    }

}

package com.atguigu.exercise;



public class TestCustomer {

    public static void main(String[] args) {

        Customer cust=new Customer("Jane","Smith");

        cust.setAccount(new Account(1000,2000,0.0123));

        Account account=cust.getAccount();

        account.deposit(100);  //cust.getAccount().deposit(100);

        account.withdraw(960); //cust.getAccount().withdraw(960);

        account.withdraw(2000);    //cust.getAccount().withdraw(2000);

       

        System.out.println("Customer ["+cust.getLastName()+","+cust.getFirstName()+"] has a account: id is "

                +account.getId()+",annualInterestRate is:"+account.getAnnualInterestRate()*100+"%,balance is:"+account.getBalance());

    }

}









四、this关键字习题二:

(1)、Boy类中的代码:

package com.atguigu.exercise;



public class Boy {

    private String name;

    private int age;

    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 void marry(Girl girl) {

        System.out.println("我要娶"+girl.getName());

    }

    public void shout() {

        if(age>22)

            System.out.println("我到了结婚年龄。");

        else

            System.out.println("未到");

    }

}

(2)、Girl类中的代码:

package com.atguigu.exercise;



public class Girl {

    private String name;



    public String getName() {

        return name;

    }



    public void setName(String name) {

        this.name = name;

    }

    public void marry(Boy boy) {

        System.out.println("我要嫁给"+boy.getName());

    }

}

(3)、test类中的代码:

package com.atguigu.exercise;



public class test {

    public static void main(String[] args) {

        Boy boy=new Boy();

        boy.setName("宫本");

        boy.setAge(25);

       

        Girl girl=new Girl();

        girl.setName("梅花");

       

        boy.marry(girl);

        boy.shout();

        System.out.println();

        girl.marry(boy);

    }

}

五、JavaBean——UML——package——import等关键字

1、JavaBean:

 

2、UML图:

3、package:声明源文件所在的包,写在程序的第一行;每”.”一次,表示一层文件目录;包名要小写。

4、import:显式的导入指定包下的类或接口;写在包的声明与源文件之间;如果需要引入多个类或接口,那么就并列就行。

Import static :表示导入类的static的属性或方法。

猜你喜欢

转载自blog.csdn.net/qq_39044046/article/details/93346393
今日推荐