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,谢谢关注。
  • 相关阅读:
    软件工程--团队作业2
    软件工程——团队作业1
    软件工程第二次作业——四则运算结对编程3.0版本(最终版本)
    软件工程第一次作业补充
    软件工程第一次作业
    实验一
    Qt-关于QTreeView的一些设置
    Qt-QTreeView绘制单元格
    NX二次开发-获取集成环境下打开的part名
    NX二次开发-NX是否处于集成环境下
  • 原文地址:https://www.cnblogs.com/vector121/p/7460303.html
Copyright © 2011-2022 走看看