方法和类的深入分析

这是《Java 8编程参考官方教程》第七章的笔记

构造方法不能被继承。也就是说子类里没有父类的构造方法。

Java重载根据的是实参和方法形参之间的匹配。自动类型转换也在重载版本的判断中起到了作用。重载的价值在于允许使用通用名称访问相关的方法。

参数传递:分为两种:值调用(call-by-value)、引用调用(call-byt-reference)
Java使用值调用传递所有实参。但根据所传递的是基本类型还是引用类型,精确效果是不同的。
  1. 当为方法传递基本类型时,使用值调用,因此会得到实参的副本。
  2. 当为方法传递对象时,情况就不同了,因为对象是通过引用调用传递的。当创建类变量时,只是创建指向对象的引用。因此,形参所引用的对象和实参所引用的对象是同一个。在方法内修改对象会影响到作为实参的对象。
p.s.当将对象引用传递给方法时,引用本身还是值调用。但是,由于传递的值引用一个对象,因此值的副本仍然引用相应实参指向的同一个对象。

static:独立于类的所有对象进行使用的成员。
被声明为静态的实例变量,在本质上是全局变量。当声明类的对象时,不会生成静态变量的副本。类的所有实例共享相同的静态变量。
静态方法有几个限制:
  1. 只能直接调用其他静态方法
  2. 只能直接访问静态数据
  3. 不能以任何方式引用this或super关键字
p.s.     main()方法被声明为静态的,因为需要在创建所有对象之前调用该方法。

final:final变量必须在声明时进行初始化,有两种方式:
  1. 在声明时提供值
  2. 在构造函数中提供值
final变量全部使用大写。
方法参数和局部变量也可以使用final:
  1. 参数:防止在方法中修改参数
  2. 局部变量:防止多次为其赋值
方法也可以使用final

嵌套类和内部类:嵌套类的作用域被限制在包含它的类中。不能独立于包含它的类存在。
嵌套类可以访问包含类的成员,包括私有成员,包含类不能访问嵌套类的成员。
嵌套类直接在包含类中作为成员声明,也可以在代码块中声明嵌套类。
嵌套类分类:
  1. 静态的嵌套类:只能通过对象访问包含类的非静态类成员。
  2. 非静态的嵌套类:如内部类。可以直接饮用外部类的所有变量和方法。
P.S.嵌套类起始于Java 1.1

内部类为什么很重要:因为内部类是在包含它的类的作用域内定义的,所以可以访问外面的类的所有变量和方法。与另外写一个类比较,不用保存调用对象的引用。

 可变长参数:
  1. 可变长参数在作为数组给予的
  2. 可变长参数必须是方法最后声明的参数
  3. 如果使用可变长参数,并且有重载版本,要严格注意其模糊性

p.s.varargs起始于JDK 5
posted @ 2016-06-16 10:25  StevenLuke  阅读(225)  评论(0编辑  收藏  举报