Java编程思想4读后小记

  • Post author:
  • Post category:java


3.4

本节讲到Java的赋值的内容,需要区别的是基本类型(int,bool)的赋值和对象的赋值不太一样。对象之间的赋值,实际是将”引用”从一个地方复制到另一个地方。这意味着如果对对象使用c=d,那么c和d都指向原本只有d指向的那个对象,这个时候对c或者对d对象做更改,c和d都会改变。这种现象称为Java的“别名现象”

3.7

本节讲到关系操作符时,又一次体现了对象引用的的知识,当两个对象进行“==”操作符进行比较的时候,其实比较的是这两个对象的引用地址,而不是内容。

请看书本上面带的例子

public class Equivalence{

public static void main(Sting[] args){

Integer n1 = new Integer(47);

Integer n2 = new Integer(47);

System.out.println(n1 == n2);

System.out.println(n1 != n2);

}

}

/*Output:

false

true

*

所以对象的比较实用equals()。自定义类就要覆盖equals方法来实现比较了。

6.3

类里面接口的顺序可能会采用public,protected,private的次序来创建,这样便于使用者从头读起,首先阅读对他们最重要的部分

6.4

类既不可以是private的,也不可以是protected的,如果希望增加访问权限,可以把构造器都指定成private,从而阻止任何人创建该类的对象,但是有一个类外,就是你在该类的static成员内部可以创建

class Soup2{

private Soup2(){}

private static Soup2 ps1 = new Soup2();

plublic static Soup2 access(){

return ps1;

}

}

这种方式也是传说中的单例设计

7.3

Java的代码复用只要方式是组合和继承,代理也是一种方式。代理其实就是用一个类对另一个类进行了封装,提供接口给外部调用。

7.4.2

Java的基类如果拥有一个多次被重载的方法,那么在这个基类的子类中该方法不会被屏蔽,这点和c++的继承不一样

@Override注解的作用,当你重载了原本是需要覆写的基类方法时,编译器会报错

7.8.3

final的一个用途是用来修饰类或者类的方法,禁止继承和覆盖。



版权声明:本文为laohu6599原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。