java入门 day08

1、构造方法

/**
 * 在我们去创建对象的时候,会用到一个特殊的方法,
 * 这个方法叫做构造方法、构造器。
 * 
 * 怎么去创建一个构造方法呢?
 * public 构造方法名(形参){}
 * 
 * 注意:1、构造方法没有返回值
 *       2、构造方法名必须和类名一致,包括大小写
 * 
 * 作用:
 * 1、创建对象 ,new的时候调用了构造方法
 * 2、在创建对象的同时,我们可以调用有参的构造方法直接对属性
 * 进行赋值。
 * 
 * 构造方法是一个特殊的方法,所以它可以进行方法重载。那么重载
 * 构造方法是为了什么呢?
 * 	在创建对象的同时,我们可以调用有参的构造方法直接对属性进行赋值
 * 
 * 注意:
 * 如果没有显示得定义构造方法,系统会默认得提供一个无参的构造方法
 * 如果显示得定义了一个有参构造方法,系统不会提供无参的构造方法,所以我们必须手动
 * 得创建一个无参的构造方法
 * 
 * 
 * 
 *
 */
	//创建一个构造方法
	public School() {
		System.out.println("无参构造方法执行了");
	}
	
	public School(String name1) {
		name=name1;
	}
	
	//第二种方式 使用构造方法对属性进行赋值(另外一种是用set方法进行赋值)
	public School(String name1,String address1) {
		name=name1;
		address=address1;
	}
//创建一个学校对象
		School sc=new School();//new后面就是调用了构造方法
		System.out.println("使用set方法进行赋值===========");
		sc.setName("国际希望小学");
		sc.setAddress("山东济宁");
		System.out.println("校名:"+sc.getName()+",地址:"+sc.getAddress());
		
		
		System.out.println("使用有参构造方法进行赋值===========");
		//new对象的同时给属性赋值,省去了set方法的麻烦,针对多个属性同时赋值
		School sc1=new School("济院","山东济宁");
		//如果向把济院进行更改的话,那么建议使用set方法
		sc1.setName("济宁大学");
		System.out.println("校名为:"+sc1.getName()+",校址:"+sc1.getAddress());
//创建一个学生对象
		Student stu=new Student();//new的就是一个构造方法
		
		//通过对象名.属性进行赋值
		stu.stuNo=10200;
		stu.stuName="张三";
		stu.setAge(20);
		//stu.age=-18;
/**
 * 	还是可以通过 对象名.属性名的方式进行赋值,那如何不让它 通过这种方式进行赋值呢?
 *	可以把类中的成员变量私有化  private
 */
		//我想直接调用属性,输出age属性值,但是属性私有化后就不能直接调用了
//		System.out.println(stu.age);
		
		//可以在类中定义一个方法来单独获取属性值
		stu.getAge();
		System.out.println(stu.getAge());
		
		
		
		
		//通过 对象名.方法名 调用方法
		stu.desc();
		

2、封装性
/**
1、面向对象的特征:封装性
当我创建完对象后,我如果直接通过 “对象名.属性名 ” 的方式给属性
赋值的话,可能会出现不符合实际情况的赋值。
所以,我们不考虑使用 “对象名.属性名 ”的方式进行赋值,而是通过
“对象名.方法名” 的方式进行赋值,因为我们可以在方法里面加上
大量的业务逻辑,对属性值进行限制。

2、 怎么用封装呢?

  • 1、将属性私有化(此时就不能通过 对象名.属性名的方式进行调用)
  • 2、提供公用的(get and set)方法实现属性的取值和赋值

*/

//private :私有的,用private修饰的属性和方法只能在当前类的内部去调用
	private int age;//年龄
//给年龄属性进行赋值
	public void setAge(int age1) {
		//如果年龄大于等于0岁,小于等于150岁
		if(age1>=0&&age1<=150) {
			age=age1;
		}else {
			System.out.println("输入不合法");
		}
	}
	
	//定义一个方法来获取年龄的值
	public int getAge() {
		return age;
	}
//创建一个学生对象
		Student stu=new Student();//new的就是一个构造方法
//可以在类中定义一个方法来单独获取属性值
		stu.getAge();
		System.out.println(stu.getAge());

3、this关键字
/**
* 成员变量和局部变量出现重名时,方法会根据“就近原则”而使用局部变量的值
* 如果想区分成员变量和局部变量,我们可以使用this关键字。
*
* 格式:
* this.成员变量
*
* 什么是this?
* 1、this代表当前使用的对象或者正在创建的对象,谁调用了这个方法谁就是this
* 2、this可以修饰成员变量、成员方法、构造方法
* 3.this(“形参”)来调用本类中其他的构造方法
* 注意,必须放在首行。
* 如果一个类里面有n个构造方法,那么构造方法内部最多有n-1个this()
*/

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void sayHello(String name) {
		System.out.println(this.name+"对"+name+"说,吃饭了没?");
		
		eat();//相当于this.eat();
	}
	
	//吃饭
	public void eat() {
		System.out.println("人吃饭");
		age=12;//相当于this.age=12;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值