Java学习(五)

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 }

 

posted @ 2018-02-05 08:48  andyalgorithm  阅读(193)  评论(0)    收藏  举报