2020-08-07

第八次课
一.
package com.hpe.demo;
/**

  • 成员变量和局部变量出现重名时,方法会根据“就近原则”使用局部变量的值,
  • 如果想区分成员变量和局部变量我们可以使用this关键字

*格式:
*this.成员变量
*
*什么是this?
*1.this代表当前使用的对象或者是正在创建的创建的对象,通过那个对象调用了方法谁就是this
*2.this可以修饰成员变量、方法、构造方法 直接在成员变量名或者成员方法名前面加上this
*3.可以在构造方法中通过"this(形参)"的方式调用本类其他构造方法
*注意:在构造方法内部this(“形参”)必须放在首行

  • 如果一个类里面有N个构造方法,那么最多有n-1个构造方法内部使用了this()

*/

//打招呼
public class Person {
private String name;//自己名字
private int age;//年龄
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 void sayHello(String name){//对方的名字
	System.out.println(this.name+"对"+name+"说:小老弟,来跟华子!");
	this.eat();
}

//成员方法
public void eat(){
	System.out.println("人吃饭");
	this.age=12;//this.age=12;
}

public Person(){
	this("张三");
	System.out.println("Person无参构造方法");
	
}
public Person(String name){
	this(19);
	this.name=name;//改成了张三
	System.out.println("Person带name参数的构造方法");
}

public Person(int age){
	this("李四",18);
	this.age=age;//改成了19
	System.out.println("Person带age参数的构造方法");
}

public Person(String name,int age){

// this();
this.name=name;
this.age=age;
System.out.println(“Person带name和age两个参数的构造方法”);
}

二.
package com.hpe.demo;
/**

  • 在我们去创建对象的时候,会用到一个特殊的方法叫做构造方法,构造器
  • 怎么去创建一个构造方法?
  • public 构造方法名(形参){
  • }
  • 注意:
  • 1.构造方法没有返回值
  • 2.构造方法名必须和你当前类的名字一致,包括大小写
  • 作用:
  • 1.创建对象,new的时候就是调用了构造方法
  • 2.在创建对象的同时,我们可以调用有参的构造方法直接对属性赋值
  • 构造方法是一个方法,他可以进行方法重载吗?
  • 可以
  • 注意:
  • 如果没有显示的定义构造方法,系统会默认的提供一个无参的构造方法
  • 如果显示的定义了一个构造方法,系统不会在提供,需要我们手动的创建一个无参的(注意)

*/

public class School {

private String name;//校名
private String address;//地址

public String getName(){
	return name;
}
//第一种方式使用set方法给属性赋值
public void setName(String name1){
	name=name1;
}

public String getAddress(){
	return address;
}

public void setAddress(String address1){
	address=address1;
}

//创建一个构造方法
public School(){
	System.out.println("无参构造方法执行了");
}

//
public School(String name1){
name=name1;
}
//第二种方式使用构造方法给属性赋值
public School(String name1,String address1){
name=name1;
address=address1;
}
}
三.
package com.hpe.demo;
/**

  • 面向对象的三大特征:封装性
  • 当我创建完对象以后,我如果直接通过"对象名.属性名"的方式给属性赋值的话,可以回出现一些不符合实际情况的问题,
  • 所有我们不考虑使用"对象名.属性名"的方式赋值,而是通过"对象名.方法名()"的方式进行赋值,因为我可以在
  • 方法里面加上大量的业务逻辑,对属性值进行限制
  • 解决方式:
  • 1.讲属性私有化
  • 2.提供公用的(get and set)方法实现属性的取值和赋值

*/

/**

  • 学生类

*/
public class Student {
int stuNo;//学号
String stuName;//姓名
//private:私有的,用private修饰的属性和方法只能在当前类的内部去调用
private int age;//年龄

//个人描述
public void desc(){
	System.out.println("我的学号是:"+stuNo+",我叫"+stuName+",我的年龄是:"+age);
}

//给年龄属性赋值
public void setAge(int age1){
	//如果年龄大于等于0岁,小于等于150岁,给age属性赋值
	if(age1>=0 && age1<=150){
		age=age1;
	}else{
		System.out.println("你输入的年龄不合法");
	}
	
}

//定义一个方法获取年龄值
public int getAge(){
	return age;
}

}
四.
package com.hpe.demo;

public class TestPerson {

public static void main(String[] args) {
	//创建一个人类对象

// Person p=new Person();
// p.setName(“尼古拉斯赵四”);//给自己的名字赋值
// p.sayHello(“刘能”);//给对方的名字赋值

	Person p=new Person();
	System.out.println(p.getName()+":"+p.getAge());

}

}
五.
package com.hpe.demo;

public class TestSchool {

public static void main(String[] args) {

// School sc1=new School(“海大”);
// System.out.println(sc1.getName());
//创建一个学校对象
System.out.println("===========使用set方法给属性赋值");
School sc=new School();//new后面就是调用了构造方法
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());

}

}
六.
package com.hpe.demo;

public class TestStudent {

public static void main(String[] args) {
	
	//创建一个学生对象
	Student stu=new Student();//new的就是一个构造方法
	//通过对象对属性赋值
	stu.stuNo=1001;
	stu.stuName="张三";
	//stu.age=-18;//必须满足int类型
	stu.setAge(18);
	//还是可以直接通过对象名.属性名的方式赋值
	//如果不让他通过stu.age方式调用属性,是不是就可以了?
	//stu.age=-18;

// stu.age=-18;

    //我想直接调用属性,输出age属性值
	System.out.println(stu.getAge());
	
	
	
	stu.desc();

}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值