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:构造方法可以重载;

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

3.3给成员变量初始化的三种方式
    A:成员变量声明时进行初始化;
    B:通过setXxx()方法 ; 
    C:通过带参构造方法;
    实际底层执行顺序:A -> B -> C(可以思考运行原理)

public class Person {
	//声明成员变量时直接初始化
	private String name = "tom";

	public String getName() {
		return name;
	}
	//通过setName()方法初始化
	public void setName(String name) {
		this.name = name;
	}
	//构造方法内进行初始化
	public Person(String name) {
		this.name = name;
	}
	
	public void work(){
	...
	}	
}

4.访问修饰符
在这里插入图片描述

5.代码示例:

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值