这篇博客补一下第四章——类与对象 的一些要点
首先不能用protected 和 private 来修饰类。
访问限制修饰符按访问权限从高到低顺序是: public,protected,友好的,private。
如果局部变量的名字和成员变量的名字相同,那么成员变量将被隐藏,即该成员变量在该方法内暂时失效,如:
class Tom{
int x=10,y;
void f(){
int x=5; //上面的x在这里变成了5
y=x+x;} //y=10
}
class Tom{
int x=10,y;
void f() {
int x=5;
y=this.x+x; //this.x=10 , x=5 ,y=15
}
}
类体中内容由变量的声明和方法的定义组成。
class A{
int a;
float b;
a=50; //非法,这是赋值语句,语句不是变量的声明,只能出现在方法体中
b=16.23f; //非法
int c=60; //声明的同时赋初值12
}
类体中可以有多个构造方法,但必须保证他们的类型不同,而且没有类型,不写构造方法是,系统会默认该类有一个构造方法,该方法无参数,而且方法体中没有语句。
可变参数是指声明方法时不给出参数列表中从某项开始直至最后一项参数的名字和个数,但这些参数的类型必须相同。注意:是直至最后一个参数。
public void f(int ... x)
public void g(double a,int ... x)
public void m(int ... x,double k) //错误地使用了可变参数,“参数代表”必须是参数列表中的最后一个
对于可变参数,Java也提供了增强的for语句,允许使用下面这种方式遍历参数代表所代表的参数:
for(声明循环变量:参数代表) {
...
}
for(int param:x) {
sum=sum+param;
}
类中的方法分为实例方法和类方法,加static修饰的是类方法(静态方法)如
static void f() {
...}
和实例方法不同的是,调用类方法是不仅可以被类创建的任何对象调用执行,还可以靠类名来调用,如 Math.max(40,399) ,得到399,而实例方法靠对象调用。
类方法中不可以出现 this, this 可以出现在实例方法和构造方法中。
---------------------------------------------------------------------------------------------------------------------------------------
包名的目的是有效地区分名字相同的类,不同Java原文件中的两个类名字相同时,他们可以通过隶属不同的包来相互区分。
package tom.jiafei;
存储文件的目录结构中必须包含如下的结构: ...\tom\jiafei,例如: C:\1000\tom\jiafei ,并把编译源文件得到的类的字节码文件保存该目录中,源文件可以任意存放。
用户程序也可以使用import来引入非类库中有包名的类,例如:
import tom.jiafei.*;
有包名的类无法使用无包名的类,毕竟你没包名 import 什么呀!