JAVA_XXBJ类和对象、构造函数
类和对象
类: 可以说是类型,是具有相同特性和行为的对象的抽象。
对象: 是类的一个代表(实例化)。对象可以是抽象的也可以是非抽象的,总结起来就是一句话,一切皆为对象。
在举例子之前,要知道一件事那就是我们不用static,在创建第一个的可以不用勾选main函数。
public class Person {//人这个类型:Person 人->特征
String name;//名字
int age;//年龄
String address;//地址
int IdCard;//身份证
public Person(){//构造函数
}
public void eat(){//特征函数
System.out.println("吃");
}
public void drink(){
System.out.println("喝");
}
public void play(){
System.out.println("玩");
}
public void happy(){
System.out.println("乐");
}
}
class是类的意思,有它修饰就表示这是一个类,这里定义的类是Person,在这里面,人有四个特征,分别是名字(name),年龄(age),地址(address),身份证(IdCard),有四个行为(特征函数),分别是吃,喝,玩,乐。Person是一个类,满足他特征的就是它的对象。
如何使用
这里面是没有main函数的,所以我们要另外创建一个class,并勾选main。建立如下代码:
public class Test {
public static void main(String[] args) {
Person p = new Person();//创建一个Person的对象
p.name = "张三";//p是person的一个对象,那他就同样具有person的特征。
p.address = "北京";//name address age IdCard
p.age = 32;
p.IdCard = 123456;
p.play();//玩//main函数里面是运行,p.play()就相当于是运行这个函数
// Person p1 = new Person("李四",30,"南京",123456);//这一行接下来会讲解
//System.out.println(p1.name);
}
}
构造函数
大家不知道有没有注意到Person()这个东西,(在上述代码的第三行),这个其实是构造函数,在第一个代码中已经写好了。构造函数他并不是动词加名词,构造函数这四个字是一个名词,顾名思义嘛,他就是构造用的函数,它是方法名和类名相同,且没有返回值 类型 的函数。他有两个功能,1是创建对象,就像上面代码里面写的一样,2是传值。
(注意:没有返回值类型不同于没有返回值)
那么我们可以在第一个代码中加入以下代码:
public Person(String name,int age,String address,int IdCard){//有参构造(传值)
this.name = name;
this.age = age;
this.address = address;
this.IdCard = IdCard;
}
这时候就可以把第二个代码后面两个//去掉了。
构造函数有两种,一种是无参构造函数,还有一种是有参构造函数,无参构造函数就是第一个代码里面的那种,有参构造函数则是如上面这个代码里面一样,注意一点,有参构造函数里面的参数列表不一定是要所有的参数都写进里面,如下:
public Person(String name,int age){//有参构造(传值)
this.name = name;
this.age = age;
}
这里有出现了一个新东西,就是this,this是指代当前(类的)对象。我们在有参构造的时候有定义变量(name age address IdCard)了,在有参构造里面定义的是局部变量,而在class里面定义的,作用与整个class的是全局变量,this.name = name就相当于,把局部变量的值给了全局变量,这也就是传值。
注意:this函数只能放在第一行。
顺序问题:遇到this(),举个栗子:
public class Person {//人这个类型:Person 人->特征
String name;//
int age;
String address;
int IdCard;
public Person(){
System.out.println("这是无参构造方法");
}
public Person(String name, int age, String address) {
//super();
this.name = name;
this.age = age;
this.address = address;
System.out.println("zheshiyoucgouzaofangf2");
}
public Person(String name,int age,String address,int IdCard){//有参构造(传值)
this.name = name;
this.age = age;
this.address = address;
this.IdCard = IdCard;
System.out.println("zhehsiyoucangouzaoff1");
}
public Person(String name, int age) {
//this();//针对无参构造方法
this("李四",30,"宿迁");//调用当前类里面构造函数(方法)
this.name = name;
this.age = age;
System.out.println("zheshiyoucgouzaoff3");
}
}
在最后一个有参构造函数里面有 this(“李四”,30,“宿迁”) 这里就是调用了有这两个参数的有参构造函数,最后会先运行 this(“李四”,30,“宿迁”);这样就会有一个嵌套的问题(注意,不能相互嵌套起来,会报错),先完成 this函数。
快捷创建
快速创建有参构造函数:
右击->s
ource,选择Generate constructor using fileds
要用及格参数就选择几个,然后点击ok。就行了,这个方法创建的会有一个super();这个后面会用到这里先去掉。
(个人学习总结,如有错误,敬请斧正,学习时间,20,11)
本文地址:https://blog.csdn.net/m0_51198729/article/details/109584468