zoukankan      html  css  js  c++  java
  • Java学习个人备忘录之构造函数&this

    构造函数

    概念:构建创造对象时调用的函数。

    作用:可以给对象进行初始化,创建对象都必须要通过构造函数初始化。

    一个类中如果没有定义过构造函数,那么该类中会有一个默认的空参数构造函数.
    如果在类中定义了指定的构造函数,那么类中默认构造函数就没有了.

    构造函数可以直接调用一般函数,但是一般函数不能直接调用构造函数,如果想调用,就要new一下。

    class Person
    {
    	private String name;
    	private int age;
    
    	//定义一个Person类的构造函数
    	Person()  //构造函数,而且是空参数的,构造函数的名和类名相同
    	{
    		System.out.println("person run");
    	}
    	public void speak()
    	{
    		System.out.println(name+":"+age);
    	}
    }
    
    class ConsDemo
    {
    	public static void main(String[] args)
    	{
    		Person p = new Person(); //这里创建Person对象后,自动调用了Person(),所以这时会打印出person run
    	}
    }
    

    this的应用


    当成员变量和局部变量重名时,可以用关键字this来区分。

    this:代表对象. 代表哪个对象呢? 当前对象。
            this就是所在函数所属对象的引用。
            简单说:哪个对象调用了this所在的函数,this就代表哪个对象。

    class Person
    {
    	private String name;
    	private int age;
    	Person(String name)
    	{
    		this.name = name;  //当局部变量和成员变量重名时,成员变量要加上this.
    	}
    	public void speak()
    	{
    		System.out.println(name);
    	}
    }
    class Demo
    {
    	Person p = new Person("哈哈");
    	p.speak(); //打印出 -- 哈哈
    }


    this的第二个用法
    构造函数中调用构造函数。
    注意:只能定义在构造函数的第一行,因为初始化动作要先执行。

    class Person
    {
    	private String name;
    	private int age;
    	Person(String name)
    	{
    		this.name = name;
    	}
    	Person(String name,int age)
    	{
    		this(name); //调用上面那个构造函数,给name赋值
    		this.age = age;
    	}
    	public void speak()
    	{
    		System.out.println(name+":"+age);
    	}
    }
    class ThisDemo
    {
    	public static void main(String[] args)
    	{
    		Person p = new Person("旺财",30);
    		p.speak();
    		Person p1 = new Person("小强");
    		p1.speak();
    	}
    }


    this关键字的应用实例

    class Person
    {
    	private String name;
    	private int age;
    	Person(String name)
    	{
    		this.name = name;
    	}
    	Person(String name,int age)
    	{
    		this(name); //调用上面那个构造函数,给name赋值
    		this.age = age;
    	}
    	public void speak()
    	{
    		System.out.println(name+":"+age);
    	}
    
    	//判断是否是同龄人
    	public boolean compare(Person p)
    	{
    		/*
    		if(this.age==p.age)
    			return true;
    		else
    			return false;
    		*/
    		return this.age==p.age;
    	}
    }
    class ThisDemo
    {
    	public static void main(String[] args)
    	{
    		Person p1 = new Person("aa",30);
    		Person p2 = new Person("zz",12);
    		p1.compare(p2);
    	}
    }
    
    我是Vector,谢谢关注。
  • 相关阅读:
    ubuntu 如何进行文件、夹删除等操作
    cuda cudnn anaconda gcc tensorflow 安装及环境配置
    ubuntu16.04系统gcc下降和升级
    关于AJAX 第五篇
    关于AJAX 第四篇
    关于AJAX 第三篇
    关于AJAX 第二篇
    关于AJAX 第一篇
    (转)关于区块链与比特币 来源于嘶吼: http://www.4hou.com/info/news/6152.html
    php 函数
  • 原文地址:https://www.cnblogs.com/vector121/p/7460303.html
Copyright © 2011-2022 走看看