Java学习-标准描述类的写法

类的格式:

public class 类名{
//一个标准的java描述类:
        1.私有化成员变量
        2.为私有化的成员变量提供set/get方法
        eclipse快捷键:alt+shift+s
        3.提供有参数和无参数的构造方法
        4.还需要写一个功能性的方法
//成员变量
//构造方法
//成员方法
}

1.封装
1.1封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
  封装的好处: A:提高了代码的复用性  B:提高安全性。
1.2为了让使用者使用方法来给成员变量赋值,就不能允许它们直接去访问成员变量,java就提供 了一个修饰符关键字:private ,封装加入private后的标准代码:
A:把成员变量private修饰
B:针对每一个成员变量给出getXxx()和setXxx()(注意首字母大写)
 注意:这里的xxx其实是成员变量名称。

2.this关键字详解
局部变量如果有一个变量和成员变量名称一致,那么优先使用的是局部变量。即就近原则。这样的话,就造成了局部变量隐藏了成员变量。如何解决呢?为了解决这种情况,java就提供了一个代表本类对象的关键字:this。
  this这个关键字指代本类中的一个对象,但是具体指代本类中的哪个对象呢?– 谁调用我我指代谁。

3.构造:
无参构造(必须),全参构造(最好有)
3.1构造方法:
    作用:给对象的数据进行初始化
    格式特点:
      A:方法名和类名相同。
        public Student() {}
      B:没有返回值类型。
        修饰符 返回值类型 方法名(…) {…}
      C:没有返回值。
        没有用return带明确的值回来。
        return;
 3.2构造方法注意事项
    A:如果你不提供构造方法,系统会给出默认无参构造方法
    B:如果你提供了构造方法,系统将不再提供默认无参构造方法
     a:使用自己给的带参构造。
     b:要么自己再提供一个无参构造 建议:永远自己给出无参构造方法。
     c:构造方法也是可以重载的。
 3.3给成员变量赋值:
    A:通过setXxx()方法
    B:通过带参构造方法

构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)构造方法不能由编程人员调用,而要系统调用。
(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构 造器,这个构造器不执行任何代码。
(6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。

4.类的代码示例:

package com.jagger.firsttry;

public class Student {
	//成员变量
	private String name;
	private int age;
	private int score;
	
	//get+set
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	
	//构造方法,无参
	public Student() {
		// TODO Auto-generated constructor stub
	}
	//构造方法,有参
	public Student(String name, int age, int score) {
		this.name = name;
		this.age = age;
		this.score = score;
	}
	
	//成员方法
	public void Select(boolean limit) {
		name = this.name;
		age = this.age;
		score = this.score;
		if(limit & age > 18 & score >90) {
			System.out.println(name + "选拔通过" + "\n" + "this地址:" + this);
		}
		else {
			System.out.println(name + "选拔不通过" + "\n" + "this地址:" + this);
		}
	}
}

package com.jagger.firsttry;

public class HelloWorld {
	public static void main(String[] args) {
		
		Student xm = new Student();
		Student xh = new Student("xiaohong",20,99);
		Student xl = new Student("xionglan",19,85);
		xh.Select(false);
		System.out.println("xh调用起始地址:"+xh);//验证this谁调用就指向谁
		xl.Select(true);
		System.out.println("xl调用起始地址:"+xl);
		
	}
}
console 执行结果:
xiaohong选拔不通过
this地址:com.jagger.firsttry.Student@7852e922
xh调用起始地址:com.jagger.firsttry.Student@7852e922
xionglan选拔不通过
this地址:com.jagger.firsttry.Student@4e25154f
xl调用起始地址:com.jagger.firsttry.Student@4e25154f

猜你喜欢

转载自blog.csdn.net/Jagger_Lin/article/details/82735049
今日推荐