面向对象进阶训练任务

封装

private:在开发中, 为了避免出现逻辑错误, 我们建议对所有属性进行封装,并为其提供setter及getter方法进行设置和取得 。

this:1.调用类中的属性

           2.调用类中的方法或构造方法

           3.表示当前对象

static:static表示“静态”的意思,可以用来修饰成员变量和成员方法

             static的主要作用在于创建独立于具体对象的域变量或者方法

重点:

  1. 静态成员 在类加载时加载并初始化。
  2. 无论一个类存在多少个对象 , 静态的属性, 永远在内存中只有一份( 可以理解为所有对象公用 )
  3. 在访问时: 静态不能访问非静态 , 非静态可以访问静态 !

代码块:

普通代码块

       在执行的流程中 出现的 代码块, 我们称其为普通代码块。

构造代码块

       在类中的成员代码块, 我们称其为构造代码块, 在每次对象创建时执行, 执行在构造方法之前。

静态代码块

        在类中使用static修饰的成员代码块, 我们称其为静态代码块, 在类加载时执行。 每次程序启动到关闭 ,只会 执行一次的代码块。

作业

1、 编写一个类 Book,代表图书: 具有属性: 名称(title)、页数(pageNum),其中页数不能 少于 200 页,否则输出错误信息,并赋予默认值 200。

package day05;
/**
 * 具有属性: 名称(title)、页数(pageNum),其中页数不能
 *           少于 200 页,否则输出错误信息,并赋予默认值 200。
 * 具有方法: 为各属性设置赋值和取值方法。 detail,用来在控制
 *          台输出每本图书的名称和页数
 */

public class Book {
	//主函数,入口
      
	public static void main(String[] args) {
		Book1 b1 = new Book1("西游记",800);//定义西游记这本书
		b1.detail();
		System.out.println();
		Book1 b2 = new Book1("红楼梦",130);//定义红楼梦这本书
		b2.detail();//打印详细信息
		b2.setPageNum(400);//修改页数
		b2.getPageNum();//输出修改后的页数
		Book1 b3 = new Book1();//创建无参对象,默认书名为空,页数为0
		System.out.println();
		b3.detail();

	}

}
class Book1 {//book类
	private String title;//名称
	private int pageNum;//页数
	//无参构造方法
	public Book1() {
		title = "未知";
		pageNum = 0;
	}
	//有参构造方法
	public Book1(String s, int i) {
		title = s;
		if(i<200) {
			pageNum = 200 ;
			System.out.println(s+":页数少于200时,则默认为200页");
		}else {
			pageNum = i;
		}
	}
	//修改书名
	public void setTitle(String numa) {
		title = numa;
		System.out.println("修改之后的书名为:"+numa);
	}
	//提取书名
	public String getTitle() {
		return title;
	}
	//修改页数
	public void setPageNum(int n) {
		if(n<200) {
			System.out.println("对不起,你输入的页数不合法!");
			//默认值200
			pageNum = 200;
			return;
		}
			//页数大于等于200
			pageNum = n ; 
			System.out.println("修改后的页数为:"+n);
		
		
	}
	//获取页数
	public int getPageNum() {
		return pageNum;
	}
	//detail方法
	public void detail() {
		System.out.println("该书的名称为:"+title+"总页数为:"+pageNum);
	}
}

2. 通过类描述开课吧的 Java 学员。 具有属性: 姓名,年龄,性别,爱好,公司(都是:开课吧), 学科(都是:Java 学科)。

package day05;

public class JavaStudent {
	/**
	 * 通过类描述开课吧的 Java 学员。
	 * 具有属性: 
	 * 姓名,年龄,性别,爱好,公司(都是:开课吧),学科(都是:Java 学科)。
	 */
	public static void main(String[] args) {
		Student a1 = new Student("张三",18,"男","健身");
		a1.dentail();

	}

}
class Student{//Student类
	private String name;//姓名
	private int age;//年龄
	private String gender;//性别
	private String hobby;//爱好
	static String company;//公司
	static String subject;//学科
	public Student(String name,int age,String gender,String hobby) {
		this.name = name;
		this.age = age;
		this.gender = gender;
		this.hobby = hobby;
		company = "开课吧";
		subject = "Java学科";
	}
		public void setName(String name) {
			this.name = name;
		}
		public String getNamr() {
			return name;
		}
		public void setAge(int age) {
			this.age = age;
		}
		public int getAge() {
			return age;
		}
		public void setGender(String gender) {
			this.gender = gender;
		}
		public String getGender() {
			return gender;
		}
		public void setHobby(String hobby) {
			this.hobby = hobby;
		}
		public String getHobby() {
			return hobby;
		}
		public void dentail() {
			System.out.println("姓名:"+name+",年龄:"+age+",性别:"+gender+",爱好:"+hobby+",公司:"+company+",学科:"+subject);
		}
}

3. 通过类描述衣服, 每个衣服对象创建时需要自动生成一个序号值。 要 求:每个衣服的序号是不同的, 且是依次递增 1 的。

package day05;

public class Clothes1 {
	/**
	 * 通过类描述衣服, 每个衣服对象创建时需要自动生成一个序号值。 要
	 *  求:每个衣服的序号是不同的, 且是依次递增 1 的。
	 */
	

	public static void main(String[] args) {
		clothes a1 = new clothes();
		clothes b1 = new clothes();
		clothes c1 = new clothes();
		a1.nums();
		b1.nums();
		c1.nums();
		
		
	}

}
class clothes{
	private static int num = 1;
	private int number;
	public  clothes() {
		this.number = clothes.num;
		clothes.num++;
	}
	public int getNumber() {
		return number;
	}
	public void  setNumber(int number) {
		this.number = number;
	}
	public void nums() {
		System.out.println("序列号为:"+number);
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值