封装性:
1.封装性就是保证类内部的定义不被外部可见
2.所有属性都必须使用private封装,封装后的属性如果要被外部所访问,要定义相应的setter和getter方
法
eg:
package day1;
class Book{
private String title;
private double price;
//定义setter方法
public void setTitle(String title) {
this.title = title;
}
public void setPrice(double price) {
this.price = price;
}
//定义getter方法 只是返回数据
public String getTitle() {
return title;
}
public double getPrice() {
return price;
}
public void getInfo() {
System.out.println("图书名称"+title+",价格"+price);
}
}
public class StudyObject {
public static void main(String[] args) {
Book book1 = new Book();//1.申明并实列化对象
book1.setTitle("假如给我三天光明");
book1.setPrice(68.9);
book1.getInfo();
}
}
构造方法
构造方法的定义原则:方法名称与类名称相同,没有返回值声明
构造方法一直存在,分为有参和无参两种
class Book {
public Book(){}//午餐的,无返回值的构造方法
}
即使类里面没有写上构造方法,在编译时也会自动生成一个构造方法
所有的构造方法在new关键字的时候调用一次;普通方法在实列化方法之后可以随意调用
构造方法的重载,方法名绝对不能变,改变的是参数个数和参数类型,必须遵循参数个数升序排列或者降序排列
匿名对象 匿名对象由于没有其他对象对其引用,所以只能使用一次,一次之后等待垃圾回收
package day1;
class Books {
private String title;
private double price;
//类中明确定义构造方法,默认的构造将不再生成
public Books(String t,double p){
this.title = t;
setPrice(p);
}
//定义setter
private void setPrice(double p) {
if(p>0.0){
this.price = p;
}
}
public void setTitle(String t) {
this.title = t;
}
//定义getter
public String getTitle() {
return title;
}
public double getPrice() {
return price;
}
//定义方法
public void getInfo(){
System.out.println("书名称"+this.title+",价格"+this.price);
}
}
public class constructor {
public static void main(String[] args) {
Books books = null;
books = new Books("指环王",89.6);
books.getInfo();
//匿名对象
new Books("指环王",89.6).getInfo();
//匿名对象由于没有其他对象对其引用,所以只能使用一次,一次之后等待垃圾回收
}
}