《java核心技术》(原书第七版)读书笔记之第四章

     呼~一声轻松!别误会,不是在那啥,而是刚刚终于看完了《core java》的第四章,整整花了2天半,虽说看的比较累,期间遇到不懂,各种找度娘,下面说说自己看的感受和一些自己觉得比较重要的地方。

        感受:一个字——晕!以前没有接触过面向对象的我,对于一下子冒出来的那么多名词感觉异常的陌生,神马类,对象,实例,封装bulabulabula~顿时心生厌恶,冒出了焚烧书本的念头,不过随着时间的推移,结合着例子代码和度娘上各位高手的解答,也让自己对这些概念有所领悟,虽然现在还是有些晕。说实话,在网上搜出来的一些解释,感觉

都比书上解释的要清楚,而且总感觉书上说的一些名词怪怪的(也许是我IQ不行,无法理解),下面就一些比较容易犯错和自己觉得难的知识点进行总结。

       知识点总结:

1)OOP:面向对象程序设计,它认为程序是由对象构成,这些对象有自己的属性和能执行的操作。

      创建类的实例:由类构造对象的过程。(我觉得就是在类中new 一个新的对象的过程,如果有不对的请指出)

      封装:将数据和行为结合在一个包里,并对对象的使用者隐藏了数据的实现方法;

      实现封装的关键在于绝对不能让类中的方法直接访问其他类的实例域,但可以访问他自己类的实例域。

      实例即对象,实例域,即是跟对象有关的属性。跟类相关的属性,叫类域,一般用static修饰。操作数据的过程叫方法。

2)类是对象的模板,对象是类的具体实例。也就是说,任何对象都是类的一个实际的实体。而类中包括属性(状态)、方法(行为)。而要想调用类里边的这些东西,就必须通过实例化一个对象,才能调用类中的这些东西呦。

1. 类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念。先有类,然后由类来生成对象(Object)。对象又叫做实例(Instance)。
2. 类由两大部分构成:属性以及方法。属性一般用名词来表示,方法一般用动词来表示。

类之间的关系:①依赖(“use-a”)②聚合(“has-a”)③继承(“is-a”)(应该将互相依赖的类减至最少)

3)对象与对象变量
例子:new Date()这里构造了新的对象,而Date date = new Date()中的date就是一个对象变量,他是Date类型的。

如果单独定义一个对象变量,是不能调用这个类的方法的,比如Date date;s = date.toString();就是错的(可以把Date跟int这些基本数据类型进行类比,只不过他是引用类型)

注意:一个对象变量没有实际包含一个对象,只是引用一个对象。(所有java对象都存储在堆中)

4)更改器方法:对实例域作出修改的方法,一般以set开头

访问器方法:仅仅访问实例域而不作修改的方法,一般以get开头

5)在一个源文件中,只能有一个公有类,但是可以有任意多个非公有类。

6)构造器(构造函数)有四点需要记住:
① 构造器与类同名;
② 每个类可以有一个以上的构造器;
③ 构造器可以有0个,1个或1个以上的参数;
④ 构造器没有返回值;
⑤ 构造器总是伴随着new一同使用。

7)this 的作用:(重要)
 首先,this指向方法的隐式参数,即调用此变量或方法的对象(就是你说的当前对象)。
 看下面这个例子:
class test{ 
 private String a; 
 void a(String a){ 
  this.a =a; 
 } 
 public static void main(String[] args){ 
  test t1 = new test(); 
  test t2 = new test(); 
  t1.a("a");//调用a这个方法的时候,this指向t1这个对象 
  t2.a("a");//调用a这个方法的时候,this指向t2这个对象 
 } 
}
 第二,如果this(...)出现在构造器或其它方法的第一句,那么说明这个构造器将调用同一类中的其他构造器或方法。
 比如:
public a(int x,int y)
{
 ...
}
public a(int x,int y,String z)
{
 this(x,y);//调用a(int x,int y)
 z=...
}

8)不要编写返回引用可变对象的访问器方法,如果需要返回一个可变对象的引用,应该对他进行克隆。(P107页有案例)

9)static是个修饰词,表示静态

  类变量也叫静态变量,也就是在变量前加了static 的变量;实例变量也叫对象变量,即没加static 的变量;

  区别在于:

  类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;

  static具体作用参见另一篇博客,里面有详细解释。

10)静态方法是不能向对象实施操作的方法。在下面两种情况下使用静态方法:
    1.当一个方法不需要访问对象状态,其所需的参数都是通过显示参数提供的;
    2.当一个方法只需要访问类的静态域。

11)每一个类都可以有一个main方法,这是对类进行单元测试时的一个常用技巧。但是要注意运行时是运行不同的类名。

12)java程序设计语言使用值调用。也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给他的任何参数变量的内容。

方法参数变量共有两种类型:基本数据类型和对象引用类型。

方法参数的使用情况:(具体是实现代码参照书上P117页ParamTest.java)
① 一个方法不能修改一个基本数据类型的参数(即数据型和布尔型值)
② 一个方法可以改变一个对象参数的状态。
③ 一个方法不能让对象参数引用一个新的对象。

13)如果类中提供了至少一个构造函数,但是没有提供默认的构造函数,那么在构造对象时若不提供构造参数会被认为不合法,出错。

14)初始化数据域的方法:
1.在构造函数中设置值
2.在声明中赋值
3.初始化块
class A {

 .....

 {

   .....//这里就是初始化块,并且可以添加static关键字,那么在类第一次加载,就会加载这里的代码

 }

}     

15)关于finalize()方法不是很理解,如果有懂得大神请指导一下


16)静态导入有两个应用:算数函数(Math类)和笨重的常量(如Calendar类)


17)关于注释涉及到写代码的规范,以后我会写一篇专门的代码规范的博客以供参考。


18)类设计技巧:

  1.一定要将数据设计为私有。最重要的是不要破坏封装;

  2.一定要对数据初始化;

  3.不要在类中使用过多的基本数据类型,可以采用另一个类对其进行封装;

  4.不是所有的域都需要独立的域访问器和域更改器;

  5.使用标准格式进行类的定义;

     一定采用下面的顺序书写类的内容:

       公有访问特性部分

       包作用域访问特性部分

       私有访问特性部分

     在每一部分中,应该按照下列顺序列出:

      实例方法

      静态方法

      实例域

      静态域

6.将职责过多的类进行分解;

7.类名和方法名要能体现他的职责。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值