zoukankan      html  css  js  c++  java
  • 关于 this 关键字的使用

    package com.jsti.guiyang_01;
    
    /*
    自定义Phone类
    this关键字
    代表当前正在调用这个方法(访问成员变量)的对象(实例)
    1.在setxxx方法中用来区分成员变量和局部变量
    2.在方法中指定调动本类的其它方法
    
    
    标准javaBean
    私有的成员变量,公有的getxxx,setxxx方法
    手动定义空参的构造方法
    
    */
     class Phone{
        //私有成员变量
        private String brand;
        private int price;
        private String color;
        
        //公有getxxx setxxx方法
        public void setBrand(String brand){
            this.brand = brand;
        }
        public String getBrand(){
            return brand;
        }
        
        public void setPrice(int price){
            this.price = price;
        }
        public int getPrice(){
            return price;
        }
        
        public void setColor(String color){
            this.color = color;
        }
        public String getColor(){
            return color;
        }
        //构造方法:
        //与类同名,没有返回值
        public Phone(String brand,int price,String color){
            this(brand,price);//在构造方法中调用其它的构造方法,必须是构造方法的第一条语句
            System.out.println("三个参数的构造方法被调用");
            
            // this.brand = brand;
            // this.price = price;
            
            this.color = color;
            
            //return xxxx;
        }
        //构造方法:
        //与类同名,没有返回值
        public Phone(String brand,int price){
            this(brand);
            System.out.println("两个参数的构造方法被调用");
            // this.brand = brand;
            this.price = price;
        }
        //构造方法:
        //与类同名,没有返回值
        public Phone(String brand){
            System.out.println("一个参数的构造方法被调用");
            this.brand = brand;
        }
        //默认的构造方法
        public Phone(){}
        
        
        //定义show方法,用于显示所有的成员变量
        public void show(){
            System.out.println(brand +" <> "+ price +" <> "+ color);
        }
        public void test(){
            show();//this可以省略
            call("tom");
        }
        
        public void call(String name){
            System.out.println("给 " + name + " 打电话");
        }
    }
    
    public class PhoneDemo {
        public static void main(String[] args){
            /*
            Phone p = new Phone();
            p.setBrand("iPhone");
            p.setPrice(7000);
            p.setColor("red");
            System.out.println();
            // p.show();
            // p.call("Tyson");
            p.test();
            */
            
            //构造方法的调用new关键字后边实际上就是在调用构造方法
            Phone p = new Phone("iPhone",7000,"red");
            p.test();
        }
    }

    下段代码源自https://blog.csdn.net/fzfengzhi/article/details/2174406

    * 本示例为了说明this的三种用法!
    
     */
    
    package test;
    
    public class ThisTest {
    
        private int i=0;
    
        //第一个构造器:有一个int型形参
    
        ThisTest(int i){
    
           this.i=i+1;//此时this表示引用成员变量i,而非函数参数i
    
           System.out.println("Int constructor i——this.i:  "+i+"——"+this.i);
    
           System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));
    
           //从两个输出结果充分证明了i和this.i是不一样的!
    
        }
    
        //  第二个构造器:有一个String型形参
    
        ThisTest(String s){
    
           System.out.println("String constructor:  "+s);
    
        }
    
        //  第三个构造器:有一个int型形参和一个String型形参
    
        ThisTest(int i,String s){
    
           this(s);//this调用第二个构造器
    
           //this(i);
    
           /*此处不能用,因为其他任何方法都不能调用构造器,只有构造方法能调用他。
    
           但是必须注意:就算是构造方法调用构造器,也必须为于其第一行,构造方法也只能调
    
           用一个且仅一次构造器!*/
    
           this.i=i++;//this以引用该类的成员变量
    
           System.out.println("Int constructor:  "+i+"/n"+"String constructor:  "+s);
    
        }
    
        public ThisTest increment(){
    
           this.i++;
    
           return this;//返回的是当前的对象,该对象属于(ThisTest)
    
        }
    
        public static void main(String[] args){
    
           ThisTest tt0=new ThisTest(10);
    
           ThisTest tt1=new ThisTest("ok");
    
           ThisTest tt2=new ThisTest(20,"ok again!");
    
          
    
           System.out.println(tt0.increment().increment().increment().i);
    
           //tt0.increment()返回一个在tt0基础上i++的ThisTest对象,
    
           //接着又返回在上面返回的对象基础上i++的ThisTest对象!
    
        }
    
    }
    
    
     
    
    运行结果:
    
    
     
    
    Int constructor i——this.i:  10——11
    
    String constructor:  ok
    
    String constructor:  ok again!
    
    Int constructor:  21
    
    String constructor:  ok again!
  • 相关阅读:
    端口以及服务常用cmd
    异步,同步,阻塞,非阻塞,并行,并发,
    mysql启动不起来
    安装nagios出现的错误
    Linux内核优化
    mysql使用常见问题
    mysql日志
    mysql数据库使用脚本实现分库备份过程
    mysqladmin常用用法
    mysql授权
  • 原文地址:https://www.cnblogs.com/leo9257/p/8850292.html
Copyright © 2011-2022 走看看