返回首页
当前位置: 主页 > 网络编程 > Jsp实例教程 >

Java对象、this、参数、static、final、继承、super、方法重写、

时间:2011-05-24 10:17来源:知行网www.zhixing123.cn 编辑:麦田守望者

1.对象
Box b1 = new Box();
Box b2 = b1;
b1和b2引用同一对象,b2对象改变则影响b1.

2.this关键字
在方法内使用this来引用当前的对象。
3.参数传递两种方式
(1)简单类型传递是按值传递,在调用方法时,其参数值的改变不会影响到传递的参数。
(2)对象的传递是按引用传递,在调用方法时,其参数对象的改变会影响到传递的参数对象。对象传递是指向同一个对象。不必指定返回类型。
4.访问控制:public ,private,protected
继承适用protected. 或同包中的非子类可以访问。
5.static
方法和变量声明为static.
变量为static则为全局变量。所有该类的对象共享同一个static变量。
static方法:仅限调用其它static方法;只能访问static数据;不能引用this,super.
01 public static void main(String[] args) {
02 one(32);
03 TestMain.one(12);
04 }
05 static int a = 5;
06 static int b;
07 static { //static 代码块,在该类第一次加载时执行且执行一次
08 b = a * 3;
09 }
10 static void one (int x){
11
12 System.out.print("x = "+x);
13 System.out.print(" a = "+a);
14 System.out.print(" b = "+b);
15 b = x;
16 System.out.println(" b = "+b);
17 }
结果:
x = 32 a = 5 b = 15 b = 32
x = 12 a = 5 b = 32 b = 12

6.:final(常量)
.定义常量:final int NUM = 1;
.阻止方法被重写: final void method(){};
.阻止类的继承:final class ClassName{}此类的所有方法是也是final
7.继承
(1)子类不能访问父类的私有(private)成员.
(2)父类变量引用子类对象,父类变量不能访问子类的特有成员。
.超类:
01 class Box {
02
03 double width;
04 double height;
05 double depth;
06 //初始化
07 public Box() {
08 this.width = -1;
09 this.height = -1;
10 this.depth = -1;
11 }
12 //复制对象(克隆一个对象)
13 Box(Box ob) {
14 this.width = ob.width;
15 this.height = ob.height;
16 this.depth = ob.depth;
17 }
18 //长方体
19 Box(double width, double height, double depth) {
20 this.width = width;
21 this.height = height;
22 this.depth = depth;
23 }
24 //立方体
25 Box(double len){
26 this.width = len;
27 this.height = len;
28 this.depth = len;
29 }
30
31 double volume() {//体积
32 return width*height*depth;
33 }
34 }
.子类:
01 class BoxWeight extends Box {
02
03 double weight;
04
05 BoxWeight(double weight,double width,double height,double depth) {
06 super(width, height, depth);
07 this.weight = weight;
08 }
09
10 }
.测试:
Box box1 = new BoxWeight(5,1,12,0.6);
double volume;
volume = box1.volume();
System.out.println("Volume of box1 is " + volume);
//System.out.println("Weight of bw2 is " + box1.weight);
结果:Volume of box1 is 7.199999999999999
由于box1.weight is not a field,weight在父类中没有定义所以不能访问。
8.super关键字
.调用父类的构造函数
.super.方法/变量 -- 调用父类的成员(调用被子类隐藏的父类成员)。例如子类和父类的变量一样时,子类会隐藏父类的变量。
9.方法重写
.子类重写父类的方法,即有相同的方法名和类型声明。父类的方法被隐藏。用super.method()调用。
.若与父类的方法名相同,参数类型或个数不同就是重载,而非重写。
.父类变量引用子类对象,变量引用被重写的方法(子类方法)
10.抽象类
.声明抽象方法,但不提供方法的实现。而子类必须重写父类的抽象方法。
.如果要求子类必须重写父类的方法,则父类应定义为抽象类(abstract)。
.看一个实例:
abstract class Figure {
double width;
double length;
double depth;
Figure(double width, double length) {
this.width = width;
this.length = length;
}

abstract double area();// abstract method
}
--------------------------------------------------------------------------------
class Rectangle extends Figure {
Rectangle(double width, double length) {
super(width, length);
}
@Override
double area() {
return width * length;
}
}
--------------------------------------------------------------------------------
class Triangle extends Figure {
Triangle(double width, double length) {
super(width, length);
}
@Override
double area() {
return width * length / 2;
}
}
--------------------------------------------------------------------------------
public class FigureTest extends TestCase {
public void testFigure() {
// Figure f = new Figure(10,10);//抽象的类是不能new的
Rectangle r = new Rectangle(10, 10);
Triangle t = new Triangle(10, 10);
// 虽然不能new一个抽象的类对象,但可以声明抽象类的一个引用变量
Figure f;
f = r;
System.out.println("长方形的面积:" + f.area());
f = t;
System.out.println("三角形的面积:" + f.area());
}
}

------分隔线----------------------------
标签(Tag):Java JAVA实例教程 JAVA基础教程 Java源代码
------分隔线----------------------------
推荐内容
猜你感兴趣