Java中package的含义与C++中namespace的用法类似,都是为了防止各个package/namespace中出现类重名的情况。但package还有一个特性,就是一个package中各个类是可以相互访问的。
所以除了一个package中的主类需要使用public修饰符外,其他的类不需要添加修饰符。
用户可以使用Eclipse中的import指令导入相关的package。系统默认为我们导入import java.lang.*包,这表示导入lang包下所有的类,但不包括langpackage下的子package。
所以,以下两条指令是不同的:
1 import java.awt.*; 2 import java.awt.dnd.*;
在Java中由以下几种修饰符:private、默认、abstract、public、四种,主要区别如下:
此外,还有修饰符:static、final和abstract。具体用法如下:1.static final可以表示常量;2.类中的字段若被static final修饰,若未初始化,那么系统会自动初始化,基本类型数据设为0,引用类型设为null;3.若只是被final修饰,那么该类不能被继承。被修饰的字段只能被用户赋值一次,系统不自动初始化;4.static与this、super不能同时存在;5.类中含有被abstract修饰的字段或方法时,类名一定要添加abstract修饰符。抽象方法不进行实例化,只是申明方法形式,而是由子类进行实例化;6static可以充当全局变量修饰符的角色。
另外,在Java的类中中还有set和get,分别表示只写和只读,它们的专有名称为bean。其实质就是设定private字段的函数和读取private字段的函数。由于类具有封装性、继承性,使用private更安全。
set和get的命名方式为setField(){……}和getField(){……}。get和set后面的第一个字母大写。
1 class ClassTest 2 { 3 private int m; 4 public ClassTest(){} 5 public ClassTest(int a) 6 { 7 m=a; 8 } 9 10 public void setM(int a) 11 { 12 this.m=a; 13 } 14 15 public int getM() 16 { 17 return m; 18 } 19 }
接口在Java中被放到很高的高度,甚至出现了名为面向接口编程。接口的作用是预先定义好一些函数的名称与参数,但并不提供实现的方法。接口中的每个方法修饰符为public abstract。其他类使用接口时用关键字implements来表示。一个类可以同时使用多个接口,即一个接口可以对应多个类,一个类也可以对应多个接口。接口之间也可以继承,用extends来表示。
接口的存在主要是为了统一规范,提高代码的独立性。如在A类中使用了接口I中的方法Menthod1(),在B类中也使用了方法Menthod1(),那么B类的方法可以用A类的方法代替,因为两者的名称相同,最后实现的功能也相同,而不需要考虑两者具体实现的差异。这能大大提高代码的可扩展性。
在Java的接口中也可以存放常量,修饰符为public static final(final也可以省略)。
Java中枚举是用class来实现的。具体用法如下:
1 package helloWorld; 2 3 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter.DEFAULT; 4 5 public class Interface { 6 7 8 } 9 10 interface Person 11 { 12 public static final String MSG="What a pretty girl!"; 13 public abstract void setName(String str); 14 public abstract void setAge(int n); 15 public static enum Light{Red,Orange,Yellow,Green,Blue,Purple} 16 } 17 18 class Student implements Person 19 { 20 private int age; 21 private String name; 22 Light light=Light.Orange; 23 @Override 24 public void setAge(int n) 25 { 26 age=n; 27 } 28 public void setName(String str) 29 { 30 name=str; 31 } 32 33 public void print() 34 { 35 System.out.println(age); 36 System.out.println(name); 37 System.out.println(MSG); 38 System.out.println(Light.Orange); 39 switch(light)//不可写成Light.Orange 40 { 41 case Red: 42 System.out.println("Red"); 43 break; 44 case Orange: 45 System.out.println("Orange"); 46 break; 47 default: 48 System.out.println("Nothing"); 49 break; 50 } 51 } 52 53 }