• 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,谢谢关注。
  • 相关阅读:
    大型系统的支撑
    应用系统开发思想的变迁
    面向对象基本特征的来历
    GC使用注意
    系统分层演变
    Oracle位图索引
    剪刀剪纸
    权限设计随笔(有空细化)
    Hibernate基础学习(六)—Hibernate二级缓存
    Hibernate基础学习(五)—对象-关系映射(下)
  • 原文地址:https://www.cnblogs.com/vector121/p/7460303.html
Copyright © 2020-2023  润新知