本博客主要是记录自己的学习心得,不为标准答案哈!
作业要求:
一、按照下面的要求编写程序:
1、编写自定义描述图书信息的 Book 类。将它存放到包 cn.edu.cuc.cs 中。
• 属性包括:书名,作者,出版社名,价格;
• 方法包括:
1) 设置属性的私有访问权限,通过 get、set 方法实现属性的访问。
• 限定价格必须大于 10,如果无效进行提示;
• 思考 this 关键字的作用;//this.author 和 author 分别是什么?
2) 设计构造方法实现对属性赋值
• 复习不同构造方法,不同的实例化对象的方法;
3) 设计信息介绍方法
showInfo
,用来描述图书所有信息;
2、 在 BookTester 类中测试,要求如下图所示。
包 cn.edu.cuc.cs 内Book.java的代码为:
package cn.edu.cuc.cs;
public class Book {
private String name;
private String author;
private String publisher;
private double price;
public Book() {}
public Book(String name,String author,String publisher,double price) {
this.Setname(name);
this.Setauthor(author);
this.Setpublisher(publisher);
this.Setprice(price);
}
public void Setname(String name) {
this.name=name;
}
public void Setauthor(String author) {
this.author=author;
}
public void Setpublisher(String publisher) {
this.publisher=publisher;
}
public void Setprice(double price) {
if(price>10)
this.price=price;
else {
System.out.println("价格必须大于10元!");
this.price=0;
}
}
public String Getname() {
return name;
}
public String Getauthor() {
return author;
}
public String Getpublisher() {
return publisher;
}
public double Getprice() {
return price;
}
public void showInfo() {
System.out.println("书名:"+this.name);
System.out.println("作者:"+this.author);
System.out.println("出版社:"+this.publisher);
System.out.println("价格:"+this.price+"元");
}
}
BookTester.java的代码为:
import cn.edu.cuc.cs.Book;
public class BookTester {
public static void main(String args[]) {
Book book1=new Book("鹿鼎记","金庸","人民文学出版社",120);
book1.showInfo();
System.out.println("========================");
Book book2 = new Book("绝代双骄", "古龙", "中国长安出版社", 55.5);
book2.showInfo();
}
}
运行效果为:
二、我的学习小心得
1、abstract关键字的使用
- 抽象方法不能用private修饰,因为抽象方法必须被子类实现(覆写),也不能用static修饰
- 抽象类不能使用final关键字修饰,不能被实例化(不能new一个抽象类),抽象类中可以有构造方法、实例方法,并实现业务逻辑(类比接口中不能有实例方法去实现业务逻辑)
- 如果一个类中至少有一个抽象方法,那么这个类一定是抽象类,但抽象类中不一定有抽象方法,如果一个类继承了一个抽象类,那么它必须全部覆写抽象类中的抽象方法,若不全部覆写,则这个子类也必须是抽象类
- 抽象类通过方法的覆盖来实现多态
2、static修饰的静态变量(类变量)的用法
- 静态变量属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。不管是使用类名还是对象名进行访问都可以改变其值。
- 静态方法(即有static修饰的方法)中可以直接调用同类中的静态成员,但不能直接调用非静态成员或方法,如果希望在静态方法中调用非静态变量或方法,可以通过创建类的对象,然后通过对象来访问非静态变量或方法
- 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
- 静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量
3、final关键字的使用
- 当用final修饰一个类时,表明这个类不能被继承,final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法,final方法不能被子类覆盖,但可以被子类继承
- 当用final修饰一个方法时,可以把方法锁定,以防任何继承类修改它的含义,而且效率高
- 当用final修饰一个变量时,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改,如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象
本次记录就到这~