欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA_XXBJ类和对象、构造函数

程序员文章站 2022-07-10 20:07:24
面向对象面向对象: 面向对象的编程思想。不同与c语言,c语言更多是面向过程。打个比方,你去餐厅吃饭,你点了个牛排,这个牛排就是面向对象,二制作牛排的这个过程就是面向过程,也就是说你用对象就可以了,而不用管他怎么弄的。类和对象类: 可以说是类型,是具有相同特性和行为的对象的抽象。对象: 是类的一个代表(实例化)。对象可以是抽象的也可以是非抽象的,总结起来就是一句话,一切皆为对象。在举例子之前,要知道一件事那就是我们不用static,在创建第一个的可以不用勾选main函数。public class...

类和对象

类: 可以说是类型,是具有相同特性和行为的对象的抽象。
对象: 是类的一个代表(实例化)。对象可以是抽象的也可以是非抽象的,总结起来就是一句话,一切皆为对象。
在举例子之前,要知道一件事那就是我们不用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
JAVA_XXBJ类和对象、构造函数要用及格参数就选择几个,然后点击ok。就行了,这个方法创建的会有一个super();这个后面会用到这里先去掉。

(个人学习总结,如有错误,敬请斧正,学习时间,20,11)

本文地址:https://blog.csdn.net/m0_51198729/article/details/109584468

相关标签: Java笔记 java