设计银行项目中的注册银行用户基本信息的类,包括账户卡号、姓名、身份证号、联系电话、家庭住址。

什么是类和对象?

类是模子,确定对象会拥有的特征(属性)和行为(方法),类的特点:类是对象的类型,具有相同属性和方法的一组对象的集合。对象是类的实例,什么是对象的属性?属性是对象拥有的各种特征;每个对象的每个属性都拥有特定值,对象的方法也就是对象执行的操作。类是抽象的概念,仅仅是模板,客观不存在。而对象是你可以看得到摸得到的具体实体,客观存在。


如何定义Java中的类?

定义类

1、类的重要性:所有的JAVA程序都以类class为组织单元;

2、什么是类:类是模子,确定对象会拥有的特征(属性)和行为(方法);

3、类的组成:属性和方法;

4、定义一个类的步骤:

a.定义类名 public class 类名{}

b.编写类的属性 //定义属性部分,可以从属性1—属性n,也可以没有

c.编写类的方法 //定义方法部分,可以从方法1—方法n,也可以没有。

如何使用Java中的对象?

使用对象的步骤:

1、创建对象 Telphone phone=new Telphone();phone对象就是Telphone类型的。类名 对象名=new 类名(); 这个语法就是对象的实例化。

2、通过对象名来使用这个对象,引用对象的属性:对象.属性,可以引用赋值;对象.属性=xx;对象.方法名,调用方法。类是以代码形式保存在文件当中,当我把文件信息放在内存中,这些信息的集合我们就把它称为对象,这个过程我们就叫做实例化。Telphone phone=new Telphone();把对象赋给了对象名这个变量,实际phone这个变量名只是指向了这个对象的空间地址。new 一个类名加上小括号() 这就是实例化,然后赋给某个变量名,变量的类型就是对象的类型,即所属类这个类型。刚创建对象时如果没有给属性赋值,则是默认值,通常使用对象会用两个操作,即给实例变量赋值,或者调用对象的方法。
 

题目:

设计银行项目中的注册银行用户基本信息的类,包括账户卡号、姓名、身份证号、联系电话、家庭住址。

要求:是一个标准Java类(数据私有,提供seter/getter),然后提供一个toString方法打印该银行用户的信息。

代码:

import java.util.Scanner;

public class triangle {//声明类中的变量,账号,姓名,身份证号,电话,地址
     int number;
     String name;
     String id;
     int Telephone;
     String address;
    public triangle(int number,String name,String id,int Telephone,String address){//构造方法给变量赋值
        this.number=number;
        this.name=name;
        this.id=id;
        this.Telephone=Telephone;
        this.address=address;
    }
    static  void toString(int number,String name,String id,int Telephone,String address){//此函数用作打印数据
        System.out.println("卡号是:"+number);
        System.out.println("姓名是:"+name);
        System.out.println("身份证号是:"+id);
        System.out.println("电话是:"+Telephone);
        System.out.println("家庭住址:"+address);
    }
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);//输入数据
        int number=sc.nextInt();
        String name=sc.next();
        String id=sc.next();
        int Telephone=sc.nextInt();
        String address=sc.next();
        triangle t=new triangle(number,name,id,Telephone,address);//初始化
        toString(t.number,t.name,t.id,t.Telephone,t.address);//打印
    }
}

 运行结果如下:

this关键字

首先我们需要知道this代表什么?


this关键字代表本类,例如Class Student
类中的this即代表Student,另外要注意一点,this关键字只能在方法内使用,方法外使用是编译不通过的!!!

用法一:this.属性名
this表示当前类,this.属性名可以给当前类的属性赋值,可以在本类中除静态方法外的任何方法(包括构造器、私有方法)中使用,这里要注意static的特性(1.遵循静态调用 2·stati关键字不能与this、super关键字共用)。
另外,若本类成员变量与方法内局部变量同名,this.属性名代表的是什么呢??
当然是局部变量了,因为Java遵循就近原则,通俗地讲,就是谁离我近,我就代表谁。
代码实现:

    class Student{
        String name;
        public void hello(){
            this.name=name;
        }
    }

用法二:this.方法
这里比较好理解,this代表本类,this.方法即调用方法,除了静态方法中不可使用,本类其他方法包括私有方法均可使用此格式调用其他方法,只是我们通常省略this关键字。
代码实现:

class Student{
        String name;
        public void hello(){
            this.name=name;
        }
    //    this.name=name;this需要在方法内使用
        public void hi(){
            this.hello();
            hello();
            he();
        }
        private void he(){
            this.name=name;
            hello();
            this.he();
        }
    }


用法三:this()
此格式用于构造器内,比如我们可以在无参构造内调用含参构造,那么这时候就需要在this()传入参数来实现,同理要想在含参构造内调用无参构造,只需在构造器代码第一行写this()即可,但是注意,this()与this(参数列表)不可同时使用!
代码实现:

    public Student(){
            this("name");
            this.name=name;
         this.he();
        }
        public Student(String name){
    //        this();两个this不能一起使用
        }

 注意:

     static void play(){
    //        this.name=name;静态不能调用非静态
        }

其中java提供seter/getter如何理解?

set 或者 get ,有一定的用处,但实际使用时,还是要根据上下文,根据模块,来决定数据的修改和获取,不应当过于依赖set或get。

1.set:在OO当中,变量最好都是private,防止被误操作,那么如何修改private的变量呢? 写一个函数,专门针对private变量,每当想要修改这个变量的时候,就调用这个set函数。

2.get:既然这个变量是private,那么外部无法获取这个变量的值了,所以,再写一个函数,专门用于返回这个变量的值,然后在类的外部,就可以随意得到这个private的变量的值。
}
在其他类继承这些私有数据的时候,更新时可以加一些判断条件:
举个栗子:

	class Persion//声明变量
	{
		private String name;
		private String idStr;
		public Persion(){}
		//注意构造方法不需要加返回类型
		public Persion(String name, String idStr)
		{
			this.name = name;
			this.idStr = idStr;
		}
		//setter和getter方法  注意返回类型
		public void setName(String name)
		{
			this.name = name;
		}
		public String getName()
		{
			return name;
		}
		public void setIdStr(String idStr)
		{
			idStr = idStr;
		}
		public String getIdStr()
		{
			return idStr;
		}
		//重写equals方法,提供自定义的相等标准
		public boolean equals(Object obj)
		{
			//只有当obj是persion对象
			if(obj != null && obj instanceof Persion)
			{
				Persion persionObj = (Persion)obj;
				//并且当前对象的IdStr与obj对象的IdStr相等才可判断两者相等
				if (this.getIdStr().equals(persionObj.getIdStr()))
				{
					return true;
				}
			}
			return false;
		}
	}
	public class OverideEqualsRight
	{
		public static void main(String[] args)
		{
			Persion p1 = new Persion("孙悟空", "123456");
			Persion p2 = new Persion("孙行者", "123456");
			Persion p3 = new Persion("孙悟饭", "1234");
			//p1和p2的IdStr相等所以输出true
			System.out.println("p1是否等于p2:" + p1.equals(p2));
			//p1和p3的idStr不相等所以输出false
			System.out.println("p1是否等于p3:" + p1.equals(p3));
		}
	}

猜你喜欢

转载自blog.csdn.net/weixin_52473454/article/details/123483663