class Circle point center float radius double get
添加一些基本的行为如获取圆的面积,表示如下: class Circle { point center; // 属性或成员 float radius; // 属性或成员 double get. Area(){ // 方法 return radius*3. 1415926; } }
添加一些基本的行为如获取圆的面积,表示如下: class Circle { point center; // 属性或成员 float radius; // 属性或成员 double get. Area(){ // 方法 return radius*3. 1415926; } }
类的声明举例: class Circle { point center; // 属性或成员 float radius; // 属性或成员 double get. Area(){ // 方法 return radius*3. 1415926; } } public class Rectangle extends Shapes implement Display{ …… // 类体 } //下面的Rectangle类继承了Shapes父类,实现了接口 Display,是一个公共类。
类体: { [public | protected | private ] [static] [final] [transient] [volatile] type variable. Name; //成员变量 [public | protected | private ] [static] [final | abstract] [native] [synchronized] return. Type method. Name([param. List]) [throws exception. List] {statements} //成员方法 }
2.成员变量使用 类的成员变量在定义它的类内部,可以直接通过成员变量名来 访问。 class Circle { static final float PI=3. 1415926 f; // 常量 private Point center; // 属性或成员 private float radius; // 属性或成员 static Color color; public float area; } float get. Area(){ // 方法 return radius*PI; } //内部访问成员变量
class Circle { static final float PI=3. 1415926 f; // 常量 private Point center; // private float radius; //实例变量 static Color color; public float area; //类变量 float get. Area(){ //实例方法 area= radius*PI; return area; //内部访问成员变量 } } 访问: Circle c 1=new Circle(); //c 1是对象名 System. out. println(“area=”+c 1. area); System. out. println(“Color=”+Circle. color);
4. 方法体 class Triangle{ double side. A, side. B, side. C; //三角形的三边 void set. Side(double a, double b, double c){ //该方法用来赋初值 side. A=a; side. B=b; side. C=c; } boolean is. Or. Not. Triangle(){ //判断是否是三角形的方法 if(side. A+side. B>side. C&&side. A+side. C>side. B&&side. B+side. C>side. A){ return true; }else{ return flase; } } }
【例4 -1】下面的例子将建立雇员信息类Emp. Info,并实例化 对象, 然后打印出若干信息。 // Emp. Info. java public class Emp. Info { String name; // 雇员的姓名 String designation; // 雇员的职务 String department; // 雇员的部门 void print() { // 成员方法 System. out. println(name + " is " + designation + " at " + department); }
public static void main(String argv[]){ Emp. Info employee = new Emp. Info(); // 创建对象并实例化 employee. name = " Robert Javaman " ; // 给成员变量赋值 employee. designation = " Manager " ; //给成员变量赋值 employee. department = " Coffee Shop " ; //给成员变量赋值 employee. print(); // 调用方法print() } } 运行结果如下: Robert Javaman is Manager at Coffee Shop
【例4 -3】在例4 -1的基础上编写带参数的构造方法。 // Emp. Info. C. java public class Emp. Info. C { String name; // 雇员的姓名 String designation; // 雇员的职务 String department; // 雇员的部门 // 带参数的构造方法 public Emp. Info. C(String name, String desi, String depa){ this. name=name; this. designation=desi; this. department=depa; } void print() { // 成员方法 System. out. println(name + " is " + designation + " at " + department); } }
【例4 -3】在例4 -1的基础上编写带参数的构造方法。 public static void main(String argv[]){ Emp. Info. C employee = new Emp. Info. C("Robert Javaman ", "Manager", "Coffee Shop"); employee. print(); // 调用方法print() } } 运行结果如下: Robert Javaman is Manager at Coffee Shop 由于采用了带有参数的构造方法来实例化对象,同时对对象进行初始化, 与例4 -1相比较,代码少了,更简洁更清晰了,如下: Emp. Info employee = new Emp. Info(); // 创建对象并实例化 employee. name = " Robert Javaman " ; // 给成员变量赋值 employee. designation = " Manager " ; //给成员变量赋值 employee. department = " Coffee Shop " ; //给成员变量赋值 employee. print(); // 调用方法print() }
【例4 -4】关于成员方法重载的例子 //Demo. Overload. java class Demo 2{ int a, b; int method(){ //成员方法一 return a+b; } int method(int c){ //成员方法二 return a+b+c; } int method(int c, int d){ //成员方法三 return a+b+c+d; } Demo 2(int a, int b) { //构造方法 this. a = a; this. b = b; } }
【例4 -4】关于成员方法重载的例子 public class Demo. Overload{ public static void main(String args[]){ Demo 2 a. Demo 2 = new Demo 2(1, 2); //实例化 int a = a. Demo 2. method(); //调用成员方法一 System. out. println(a); int b = a. Demo 2. method(3); //调用成员方法二 System. out. println(b); int c = a. Demo 2. method(3, 4); //调用成员方法三 System. out. println(c); } } 上面程序的运行结果为: 3 6 10
【例4 -5】构造方法也可以重载,// Construction. Overload. java class Demo{ int a, b, c; //成员变量 public Demo(){} //构造方法 1 public Demo(int a) { //构造方法 2 this. a = a; } public Demo(int a, int b) { //构造方法 3 this. a = a; this. b = b; } public Demo(int a, int b, int c) {//构造方法 4 this. a = a; this. b = b; this. c = c; } }
public class Construction. Overload{ public static void main(String args[]){ //应用第一种构造方法 Demo a. Demo = new Demo(); System. out. println("方法一成员变量a:"+a. Demo. a); System. out. println("方法一成员变量b:"+a. Demo. b); System. out. println("方法一成员变量c:"+a. Demo. c); //应用第二种构造方法 Demo b. Demo = new Demo(1); System. out. println("方法二成员变量a:"+b. Demo. a); System. out. println("方法二成员变量b:"+b. Demo. b); System. out. println("方法二成员变量c:"+b. Demo. c); ……
【例4 -6】下面是关于实例变量的例子 //inst. Var. java class ko. A{ int a; public void display(){ System. out. print(" a="+a); } } public class inst. Var{ public static void main(String args[]){ ko. A a 1=new ko. A(); a 1. a=10; //a 1 是一个实例对象 ko. A a 2=new ko. A(); a 2. a=20; // a 2是另一个实例对象 a 1. display(); a 2. display(); } } 运行结果为 a=10 a=20
【例4 -7】 下面是类变量的例子 // class. Var. java class ko. B{ static int a; public void display(){ System. out. print(" a="+a); } } public class. Var{ public static void main(String args[]){ ko. B a 1=new ko. B(); a 1. a=10; //a 1是一个实例对象 ko. B a 2=new ko. B(); a 2. a=20; //a 2是另一个实例对象 ko. B. a=50; //类方法直接访问类变量 a 1. display(); a 2. display(); } } 运行结果为: a=50
【例4 -8】下面是类方法使用的例子 // class. Method. Test. java class member{ static int class. Var; int instance. Var; static void set. Class. Var(int i){ class. Var=i; // instance. Var=i; //在类方法中不能引用实例成员。 } static int get. Class. Var( ){ return class. Var; } void set. Instance. Var(int i ){ class. Var=i; instance. Var=i; } int get. Instance. Var(){ return instance. Var; } }
p u b l i c c l a s s M e t h o d T e s t
4. 4. 1 package语句 4. 4. 2 import语句 4. 4. 3 编译和运行包
n 1 、 c l a s s p a t h 我
n n 【例4 -9】找出 50以内的素数 // Prime. java package tom. jiafei; public class Prime{ public static void main(String args[]){ int sum=0, i, j; for( i=1; i<=50; i++){ //找出 50以内的素数. for(j=2; j<=i/2; j++){ if(i%j==0) break; } if(j>i/2) System. out. print("素数"+i+" "); } } }
n n 【例4 -9】找出 50以内的素数 // Prime. java package tom. jiafei; public class Prime{。。。。。。} n n (1)建立子目录结构 在当前目录结构下必须包含有如下的子目录结构tomjiafei, 由于当前目录为d: userchap 04, 所以可以将源文件拷贝在目录 d: userchap 04tomjiafei中, 然后编译源文件,如下: d: userchap 04tomjiafei>javac Prime. java 运行程序时必须在目录c: userchap 04 中来运行, 如 d: userchap 04>java tom. jiafei. Prime (2) 或者采用-d选项来指定包的根目录为当前目录,编译成功后, 自动建tomjiafei子目录并将Primnumber. class存入,编译和运行如 下: d: userchap 04>javac –d. Prime. java d: userchap 04>java tom. jiafei. Prime
在 Java中 , 可 以 选 择 四 种 访 问 方 式 : public、 private、 protected 和default.
4. 5. 1公共类型(public) 4. 5. 2保护类型(protected) 4. 5. 3 私有类型(private)
n p / / D e m o p u b 2. j a v a a c k a g e p u b 2
/ p / D e m o p r o 4. J a v a a c k a g e p r o 4
p u b l i c s t a t i c v o i d m a i n ( S t r i
p u b l i c s t a t i c v o i d m a i n ( S t r i
1) final修饰成员变量 如果一个成员变量前面有final修饰,那么这个成员变量就变 成了常量,一经赋值,就不允许在程序的其他地方修改。 定义方式如下: final type variable. Name; 例如 class Const. Time. Express{ final int Max. Hour=23; final int Max. Minute=59; final int Max. Second=59; }
【例4 -13】get. Class和Instanceof方法的使用 // Class. And. Instance. java class Sub. Class { } class Super. Class extends Sub. Class { } public class Class. And. Instance { public static void main(String[] args) { test(new Sub. Class()); test(new Super. Class()); } static void test(Object x) { System. out. println("Testing x of type " + x. get. Class()); System. out. println("x instanceof Sub. Class " + (x instanceof Sub. Class)); System. out. println("x instanceof Super. Class " + (x instanceof Super. Class)); } }
程序运行结果:如下: Testing x of type class Sub. Class x instanceof Sub. Class true x instanceof Super. Class false Testing x of type class Super. Class x instanceof Sub. Class true x instanceof Super. Class true
在C程序中main()作为一个程序的入口方法,在Java中也同 样利用这个方法来启动一个Java程序。main()使用一个字 符串数组作为参数,它表示启动Java这个程序时的命令行 参数,在下面的例子中我们展现了如何使用main的这个参数。 【例4 -15 】从命令行输入参数 // Main. Argument. java public class Main. Argument{ public static void main(String[]args) { for(int i=0; i<args. length; i++) { System. out. println(“Argumnet[” +i+”]: ”+args[i]); } } 程序运行结果: D: userchap 04>java Main. Argument One Two Argumnet[0]: One Argumnet[1]: Two
- Slides: 98