Java学习日记6——类、字段、方法、this的使用
1.类是Java中的基本元素,作为一类对象的基本原型,封装了一类对象的状态和方法,简言之,就是把变量和函数封装在一个类中。
2.字段是类的属性,使用变量来表示的,字段又被成为域、域变量、属性、成员变量等。
3.方法就是类的功能和操作,是用函数来表示的。
关于类、字段和方法的关系在日记2中已经详细介绍过了,详情参见:日记2。本文主要介绍的是类的继承等。
方法中特殊的存在——构造方法(constructor)
该方法是一种特殊的方法,用来初始化(new)类的一个新对象,构造方法与类是同名的,而且不写返回数据类型。举个例子:为了定义一个新的人物对象张三,且张三的年龄是17岁。那么在person类这个基础上将姓名:张三和年龄:17都传递到新构建的对象中。具体写法如下:
//构建一个类person
public class person{
String name;
int age;
void say(){
System.out.println("hello! my name is : "+name)
};
//下面就是构造方法
public person(String n,int m) {//与类名同名,加入了参数变量
name = n;
age = m;
}
}
public class persontest
{
private static void test(person p) {
// TODO Auto-generated method stub
p.say();
}
public static void main(String[] args)
{
String n = "张三";
int a = 17;
test(new person(n,a));
}
}
运行结果是:
hello! My name is :张三
非常重要的概念——重载overload
概念:多个方法使用了相同的方法名字,但是程序在编译执行时依旧可以准确的区分每个方法不出错的执行。这就需要这些方法的签名不同,或者是参数个数不同,或者是参数类型不同,通过重载就可以实现多态(前面的文章已经讲过,可以点击这里查看其定义)。
this的三种使用
1.解决局部变量和字段同名的问题,举例如下:
//构建一个类person
public class person{
String name;
int age;
void say(){
System.out.println("hello! my name is : "+name)
};
//下面就是构造方法
public person(String name,int age) {//与类名同名,加入了参数变量
this.name = name;
this.age = age;
}
上面代码中,this.name和this.age表示的类的变量name和age,也就是public class person{}中的name和age。没有this的name和age则表示的是当前局部的name和age,也就是public person(String name,int age){}语句中的name和age。注意两者的区别。
2.调用另一个构造方法(在一个构造方法中调用另一个构造方法)
调用本类中另一种形式的构造函数,这种情况下,this语句必须放在构造方法的最开始,也就是第一句。
person()
{
this.("张三",17);//调用另一个构造方法,其中张三和17都是需要传递的参数
...
}
当一个类内部的构造方法比较多时,可以只书写一个构造方法的内部功能代码,然后其他的构造方法都通过调用该构造方法来实现,这样既保证了所有的构造方法是统一的,也降低了代码的重复。
3.使用this来访问字段和方法
例如例程中say()方法:
//第一种不加this
void say(){
System.out.println("hello! my name is : "+name)
};
//第二种加this
void say(){
System.out.println("hello! my name is : "+this.name)
};
}
这里的name和this.name实际都是指类中的变量name,所以是一样的,加或者不加都可以。
如果你对Java有兴趣,可以了解一下前面几期的基础知识!下面附上链接:
Java编程基础认知:Java学习日记1——基础认知
Java面向对象编程认识:Java学习日记2——面向对象编程认知
Java程序的基本结构认识:Java学习日记3——程序类型与构成认知
Java的输入输出方法总结:Java学习日记4——Java输入输出方法总结
Java的数据类型、变量、常量、运算符:Java学习日记5——数据类型、变量、常量、运算符、数组