201711671224 《Java程序设计》第5章学习总结

教材学习内容总结

第五章 对象封装

5.1 何谓封装

  • 封装实际上使用方法将类的数据隐藏起来,隐藏对象细节,将对象当作黑箱操作,用户不用再需要重复撰写对象初始化流程
class CashApp {
    String number;
    int balance;
    int bonus;
    CashApp(String number,int balance,int bonus){
        this.number = number;
        this.balance = balance;
        this.bonus = bonus;
    }
}
public class CashCard{
   public static void main(String[] args){
       CashApp[] cards =  {
               new CashApp("A001",500,0),
               new CashApp("A002",300,0),
               new CashApp("A003",1000,1),
               new CashApp("A004",2000,2),
               new CashApp("A005",3000,3),
       };

       for(CashApp card : cards){
           System.out.printf("(%s,%d,%d)%n",card.number,card.balance,card.bonus);
       }
   }
}
  • 在类中定义方法,如果不用返回值,方法名称前可声明void,方法若会返回值,必须在方法前声明返回值的类型
  • 自由存取类私有数据,使用private定义,也可以用在方法或构造函数声明,也可以用在内部类声明

    5.2 类语法细节

  • 三个权限修饰:publicprivate、 protected
  • public权限修饰
    • 如果想在其他包的类程序中存取某包的类或对象成员,则该类或对象成员必须是公开成员,用public加以声明
    • 声明类为public,表示它是个公共类,可以在其他包的类中使用
    • 声明构造函数为public,表示其他包中的类可以直接调用这个构造函数
    • 声明方法为public,表示其他包的方法中可以直接调用这个方法
    • 声明数据成员为public
  • 定义类时,可以使用构造函数定义对象建立的初始流程
  • 构造函数是与类名称同名,无须声明返回类型的方法
  • 编译程序会在你没有撰写任何构造函数时,自动加入默认构造函数
  • 在没有编写任何构造函数时,也可以Some some = new some();这样以无自变量方式调用函数
  • 重载构造函数:定义多个构造函数,只要参数类型或个数不同
  • 调用方法valueOf()根据传递的自变量类型不同,会调用对应的方法

class Some{
    void someMethod(int i){
        System.out.println("int 版本被调用");
    }
    void someMethod(Integer integer){
        System.out.println("Integer 版本被调用");
    }
}

public class OverloadBoxing {
    public static void main(String[] args){
        Some s = new Some();
        s.someMethod(1);
    }
}
  • 除被声明static的地方外,this关键字可以出现在类中的任何地方,在对象建立后为“这个对象”的参考名称
  • this()代表调用另一个构造函数,根据调用时给的自变量类型与个数定调用哪个函数,只能出现在构造函数的第一行
  • 在创建对象后、调用函数前,若有想执行的流程,可以用{}定义
  • 如果撰写了对象初始化区块,对象建立之后会先执行对象初始区块,接着再调用指定的构造函数
  • 对象数据成员被声明为final,但没有明确用=指定值,表示延迟对象成员值的定义,但在构造函数执行流程中,一定要有对该数据成员指定值的动作
  • static不用每个对象各自拥有,表示它属于类
  • 通过类名称.static成员取得static成员
  • static方法或区块中,不能调用非static方法或区块,可以使用static数据成员或方法成员
  • import static解析顺序:1.局部变量覆盖2.成员覆盖3.重载方法比较
  • 使用不定长度自变量,声明参数列时要在类型关键字后加...,方法上声明的不定长度参数必须是参数列最后一个
  • 使用两个不定长度参数列是不合法的
  • 内部类:在类中再定义类
  • 内部类可以用publicprotectedprivate声明
  • 内部类本身可以存取外部类成员
  • 非静态内部类会声明为private
  • 被声明为static的内部类,将外部类当作名称空间,Some.Other o = new Some.Other()
  • 被声明为static的内部类,虽然将外部类当作名称空间,但是算是独立类,只可以存取外部类static成员
  • 方法中也可以声明类,辅助方法中演算,方法外无法使用
  • java中只有传值调用

总结:

封装

  • 封装目的主要是隐藏对象细节。
  • 使用private定义私有成员,封装了类私有数据,让用户必须通过你提供的操作方法,经过你定义的流程才有可能存取私有数据。

类语法

  • public为公开类,在构造函数上声明public表示其他包中的类可以直接调用这个构造函数,在方法上声明public表示其他包的方法可以直接调用这个方法。
  • 没有定义任何权限关键字时,就是包权限。
  • 只有编译程序自动加入的构造函数,才成为默认构造函数,如果自行撰写无参数、没有内容的构造函数就不称为默认构造函数了。

重载构造函数

  • 可以定义多个构造函数,只要参数类型或个数不同。
  • 定义方法时也可以进行重载,虽然调用的方法名称相同,但根据传递的自变量类型不同,会调用对应的方法。

其他(感悟、思考等)

补的学习总结……顺便复习吧……

参考资料

  • 《Java程序设计》

猜你喜欢

转载自blog.csdn.net/nemeziz/article/details/84544037