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);
}
}
Java学习个人备忘录之构造函数&this的更多相关文章
- java学习面向对象之父子构造函数初始化
在之前讲到java面向对象继承的时候,我们只讲到了两个比较重要的知识点,一个是父子类当中有同名的成员变量,这个时候,我们引入了super这个关键字来区分这两个同名成员变量,除此之外,我们还讲到了父子同 ...
- Java学习个人备忘录之多线程
进程:正在进行中的程序(直译). 线程:就是进程中一个负责程序执行的控制单元(执行路径) 一个进程中可以有多个执行路径,称之为多线程. 一个进程中至少要有一个线程. 开启多个线程是为了同时运行多部分代 ...
- Java学习个人备忘录之继承
继承的好处1. 提高了代码的复用性.2. 让类与类之间产生了关系,给第三个特征多态提供了前提. java中支持单继承,不直接支持多继承,但对C++中的多继承机制进行改良.java支持多层继承. C继承 ...
- Java学习个人备忘录之文档注释
文档注释 单行注释用 // 多行注释有两种,第一种是 /* 内容 */,第二种是/** 内容 */. 这两种多行注释的区别是/** 内容 */这种注释可以生成一个该文件的注释文档,下面是演示代码. A ...
- Java学习个人备忘录之数组工具类
下面主要讲解一个针对数组操作的工具类. a.java -- 工具类文件 //按理来说要先编译本文件, 然后再编译主函数 class ArrayTool { /* 获取整型数组的最大值 */ publi ...
- Java学习个人备忘录之关键字static
被static标记的东西会放在内存中被共享的,对象用到时,就会来取的. class Person { String name; //成员变量,实例变量 static String country = ...
- Java学习个人备忘录之线程间的通信
线程间通讯多个线程在处理同一资源,但是任务却不同. class Resource { String name; String sex; } //输入 class Input implements Ru ...
- Java学习个人备忘录之异常
概述 异常:是在运行时期发生的不正常情况. 在java中用类的形式对不正常情况进行了描述和封装对象. 描述不正常的情况的类,就称为异常类. 以前正常流程代码和问题处理代码相结合,现在将正常流程代码和问 ...
- Java学习个人备忘录之接口
abstract class AbsDemo { abstract void show1(); abstract void show2(); } 当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类 ...
随机推荐
- 纯js轮播图练习-1
偶尔练习,看视频自己学着做个简单的纯JS轮播. 简单的纯js轮播图练习-1. 样子就是上面图片那样,先不管好不好看,主要是学会运用和理解轮播的原理 掌握核心的理论知识和技术的操作,其他的都可以在这个基 ...
- go加密算法:CBC对称加密(一)--3DES/AES
其实对称加密中的:DES\3DES\AES 采取的加解密步骤一致,只是小的细节不太一样.大家多看看就能写出来了 // rsao1.go package main import ( "byte ...
- 微信小程序数据分析之自定义分析
在小程序后台,微信已经提供了强大的数据分析功能,包括实时统计.访问分析.来源分析和用户画像功能,可以说对一般的数据分析已经完全足够了,但有时应用需要做一些更加精准的数据分析,比如具体到某一个页面的分享 ...
- 小白CSS学习日记-----杂乱无序记录(3)
1.后代选择器 .antzone li { } class='antzone' 所有子孙后代中的li 2.子选择器 .antzone > li { } class='antzone' 的子一 ...
- PHP基础2--基本语法
主要: 标记符,注释 变量 常量 数据类型 运算符 流程控制 标记符,注释 4种标记符号: 1. 默认形式: <?php php语句 ?> 如果<?php ... ...
- Leecode刷题之旅-C语言/python-349两个数组的交集
/* * @lc app=leetcode.cn id=349 lang=c * * [349] 两个数组的交集 * * https://leetcode-cn.com/problems/inters ...
- Go 入门 - 控制流
主要内容来自中文版的官方教程Go语言之旅 目的为总结要点 循环 Go 只有 for循环 for 由三部分组成,用分号间隔开 初始化语句:在第一次迭代之前执行,通常为一句短变量声明(i:=0) 条件表达 ...
- 北京Uber优步司机奖励政策(12月31日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 苏州Uber优步司机奖励政策(12月21日到12月27日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- C#第一阶段——结构体
概念理解: 很多相互联系的信息可以组成一个整体.比如一个学生的信息包括学号.姓名.性别.年龄等,它们紧密联系,共同描述学生的状况.在 C#中我们可以把这些紧密联系变量定义成结构体(Str ...