Java类和对象
类的定包括声明和类体两部分
[修饰符] class类名 [extends 父类名][implements接口列表]
{
......//类体部分
}
1.“[]”中的内容为可选部分。
2.修饰符分访问控制修饰(如:public)和类型修饰(如:abstract,final)。
abstract声明这个类是抽象类,即这个类不能被实例化。
抽象类用来描述事一般状态和行为,然后在子类中再去实现这些状态和行为。
抽象类的定义
abstract class 类名称{
成员变量的定义;
方法(){............}//定义具体方法
abstract 方法();//定义抽象方法
}
[说明]
1.在抽象类中可以包含具体方法和抽象方法,非抽象类中一定不能有抽象方法。
2.抽象类表示的是一种抽象概念,不能被实例化为对象。
[注意]
抽象类不能用final来修饰,即一个类不能既是最终类又是抽象类。
abstract不能与private、static、final、native并列修饰同一个方法。
final声明该类不能被继承,即没有子类。
3.关键字class引导要定义的类,类名为一个标识符,通常以大写字母开始的。
4.关键字extends引导该类要继承的父类。且在extends之后只能跟唯一一个父类名,即定义类时使用extends只能实现单继承。
5.关键字implements引导该类所实现的接口序列。
类的成员属性的定义格式如下:
[修饰符] 类型 变量名;
类的成员方法的定义格式如下:
[修饰符] 返回值类型 方法名 ([参数定义列表])[throw异常列表]
{
......//方法体
}
public class Point{//类名为Point
private int x;//x坐标
private int y;//y坐标
public void move(int x1,int y1)
{
x = x1;
y = y1;
}
public String toString()//对象的字符串的描述表示
{
return "点:"+x+","+y;
}
}
public static void main(String args[])
{
Point p1 = new Point();//创建一个Point对象
Point p2 = new Point();//创建另一个Point对象
Point p3 = p1;
p1.move(5,8);
p2.x = 12;
System.out.println("p1"+p1);
System.out.println("p2"+p2);
System.out.println("p3"+p3);
}
//运行结果:
p1点:5,8
p2点:12,0
p3点:5,8
变量作用域
1.成员变量:其作用域是整个类体。成员变量定义时系统会自动赋默认初值。
2.局部变量:在定义时系统不会自动赋默认初值。
3.方法参数:其作用域是整个方法。
4.异常处理:其作用范围是catch后面跟随的异常处理块。
如:
try
{
int x = 5/0;
}
catch(ArithmeticException e)//异常处理参数的有效范围
{
System.out.pritln("产生异常:"+e);
}
类变量和静态方法
用static修饰符修饰的属性是仅属于类的静态属性,相应的成员变量也称类变量或者静态变量。
(1)在本类中直接访问,如:k++.
(2)通过类名作前缀访问,如:A.k.
(3)通过类的一个对象作前缀访问,如:x1.k++.
Java类包括两种类型的成员变量:实例成员变量和类成员变量。简称实例变量和类变量。用static修饰的变量是类变量。
类变量和实例变量的区别是,第一次调用类的时候,系统仅为类变量分配一次内存。不管该类要创建多少对象,所有对象共享该类的类变量。因此,可以通过类本身或某个对象来访问类变量。
public class A
{
static int k = 3;
public static void main(String args[])
{
A x1 = new A();
x1.k++;
A x2 = new A();
x2.k = 5;
k++;
System.out.println("k="+A.k);
}
}
this
this出现在类的实例方法或构造方法中,用来代表使用该方法的对象。用this作前缀可以访问当前对象的实例变量或成员方法。
this.实例变量
this.成员方法(参数)
this的用途主要包括:
(1)在实例变量和局部变量名称相同时,用this作前缀来特指访问实例变量。
(2)把当前对象的引用作为参数传递给另一个方法。
(3)在一个构造方法中调用同类的另一个构造方法,形式为:this(参数)。但要注意,用this调用的构造方法,必须是方法体中的第一个语句。
匿名对象的使用
匿名对象的使用方式之一:当对对象的方法只是用一次时,可以用匿名对象来完成,这样写比较简单
如果对一个对象进行多个成员使用,必须给这个对象取个名字。
匿名对象使用方式二:可以将匿名对象作为实际参数进行传递。