Java的基本特性



Java的基本特性.  1.若类变量没有初始化,并且直接在后面的代码中使用,那么系统会自动识别其数据类型,并且为他赋初值。而局部变量则不行,会直接报错。

 2.访问修饰符:
public              工程
producted       本包+ 外包子类
默认                本包(默认叫做包权限修饰符)
private            本类(可以被继承,但是继承后无使用的权利)
————————————————————————————–
直观图:

2010年11月01日 - wenchangqing_live - 夏小盆友

 3.多肽
Animal        tuzi     =       new         EatGrassAnimal();
父类                                                    子类
只可调用父类Animal中的方法,但走到子类的对象。
子类方法引用可调用的方法,由引用类型决定,不是该引用指向的对象类型决定。

         —————————————————————————————————
         一个父类的引用类型变量可以“指向”其子类的对象。
         一个父类的引用不可以访问其子类对象新增加的成员(属性和方法)。
         可以使用  引用  变量  instanceof  类名  来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。
         子类的对象可以当作父类的对象来使用称做向上转型(upcasting),反之称为向下转型(downcasting)。
         —————————————————————————————————
         多态必须有:继承、重写、父类引用指向子类对象。
多态在运行时动态绑定,原本指向的是父类Animal,但是在运行的时候,开始改变指向子类的方法。

4.值类型,和引用类型
值类型保存的是                  值(在栈中)
引用类型保存的是              指向堆的内存地址(在栈中)                  堆中保存的是对象
(引用类型传递的是内存地址,而值类型传递的是值)

5.类名
Java中*.java名,应该和类名相同。
在一个*.java文件中,最外层类只能有一个是public的,并且该class必须是和*.java文件名字相同的class。

6.数据类型
Java中的成员变量(写在class中的)系统会根据其数据类型自动给予赋值。
Java中的局部变量(写在方法中的),系统不会自动赋值。
         另外:
         int a,b = 1;或者int b=1,a;
类似于这样的赋值,a没有值(系统自动赋值),b才等于”1″。

例子:
do le d =1e200;
float o = (float)d;
System.out.println(o);
输出:
Infinity

意思是说“无穷大”。也就是d这个值大于 float的存贮空间。
还有:
打印的时候是将所有类型都转换为String类型的,然后输入出的。
int a = 12;
String b = “”+a;(自动转换为String类型)

7.静态方法(static)
使用static修饰
再调用过程中,静态的可以直接调用静态的,非静态的可以直接调用静态的(都是  类.方法())。
静态的中要调用非静态的需要new一个对象,才可以调用。

8.接口(Interface)
在接口中的属性自动是:  public   static  final 修饰的。
接口中的方法一定是public的。
接口中的属性系统不会自动赋值。
接口可以继承接口。(专业术语:扩展)
面向接口编程:
可以使 接口 和 实现 分离。
好处:增强扩展性,添加实现类而没有任何更改。
使用:用在经常改动的地方,层和层之间的调用。
接口实现多继承:
子类继承一个父类,同时实现多个接口。
子类:GoldenMonkey         父类:Valuable          接口:Protectable
GoldenMonkey  有父类的方法和对于接口的实现。
调用时:
Valuable v = new GoldenMonkey();        //  Valuable 父类
v.getMoney();
Protectable p = (Protectable)v;               //  Protectable 接口
p.beProtected();

9.构造方法
构造方法名要与类名相同,构造方法没有返回值,构造方法可以重载。
类如果不写构造方法,系统会自动创建一个无参的构造方法。
一旦自己在类中写了一个构造方法,系统将不会自动创建无参的构造方法。
经验:
如果在类中创建了一有参的构造方法,则再new对象不传参数将会报错。
public class Person{
//建议在写有参的构造函数时,将无参的构造函数写上。『以免  这样的代码报错:Person person = new Person();』
public Person(){

}
public Person(int Id,int age){


}
}

10.重载(overload)
注意一下几点:方法名相同,参数类型不同,参数个数不同,参数顺序不同。
满足上述要求,就构成重载。

11.this关键字
this表示的是当前对象。
在内存中,this可以看作是一个变量,它的值是当前对象的引用。
经典实例:
public  class  Leaf(){
int i = 0;
Leaf(int i){
this.i = i;
}
}
分析:
成员变量  i =0;
在构造方法Leaf中有一个声明了  变量 i ,这个 i 的作用域在构造方法中,
这里的 this 代表的是 Leaf类的对象, 所以  this.i = i;  第一个是成员变量 i ,第二个是构造方法的 i .

12.Java中的包
包的命名:com.公司名.小组.***    (前面其实就是公司的域名,在这以后再细分)
将一个类放入包中,要在这个类源文件第一句话写 package。
要确定 包名 跟 实际的目录层次 正确。(该类的源码可能会产生影响)。
访问位于同一个包中的类不需要引入。
必须class文件的最上层包的父目录位于classpath下。
在  cmd中  执行一个类需要写全包名。
—————————————————————————————————
jre中 sun 提供给我们的一些类:
java.lang         包含一些java语言的核心类,如:String、Math、Integer、System、Thead……
(这个包内的类是唯一不用导包就可以使用的)
java.awt         包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形化界面                  (GUI)。
java.applet         包含applet运行所需的一些类。
java.net         包含执行与网络相关的操作的类。
java.io         包含能提供多种输入/输出功能的类。
java.util         包含一些使用工具类,如定义系统特性、使用与时期相关的函数。

         这些包所在的路径:Java\jre1.6.0_03\lib\rt.jar   文件(这个包中的com.java包下)
—————————————————————————————————-

13.架包(jar)
用命令给项目打包:
输入命令:jar         (将显示所有的参数帮助)
打包直接输入:jar -cvf 名字.jar *.*         (先切换到项目目录内部根目录,这里的*.*表示主目录下的所有文件夹以及文件)
使用架包:在 环境变量中配置classpath属性    路径\架包名.jar         (这样就可以调用架包中的类了,其实就是把jar当作一个文件夹)

14. 继承(extend)
使用关键字extend继承,子类会继承父类的所有东西(可以继承private修饰的,但是没有调用、使用的权利)

         一个类只能有一个父类。
内存分析:子类中有一个父类的对象。所以可以继承父类的东西。

15.重写(overwrite)
要与被重写的方法拥有相同的:类名、参数、返回值。
注意
重写的访问权限要不小于被重写的访问权限。
重写的类中,父类和子类有相同名称且相同修饰符的成员变量,
那么这两个成员变量之间不存在重写,这两个成员变量属于各自的对象。

16.super
super         表示的是父类的对象。
内存中的空间

2010年11月01日 - wenchangqing_live - 夏小盆友

17.继承中的构造方法
         子类的构造过程,必须调用父类的构造方法。
子类可以在自己的方法中使用『super(参数)』调用父类的构造方法,可以使用『this(参数)』调用子类的构造方法。
如果子类构造方法中没有显示的调用基类构造方法,则系统默认调用基类无参的构造方法。
如果子类构造方法中既没有显示调用父类构造方法,而父类中又没有无参的构造方法,则编译出错。

 
         18.哈希编码
         一个哈希编码(它独一无二)对应一个内存中的一个对象。
         根据哈希编码可以找到内存中的对象。
 
         19.instanceof  
         可以使用  引用  变量  instanceof  类名  来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。

         20.抽象类(abstract)
         有抽象方法的类,必须是抽象类。
         抽象方法必须被实现,除非他的子类也是抽象类。
         抽象方法只需要声明,不需要实现。
         抽象方法不能实例化(不可以new对象)

         21.final
         final的变量的值不能够被改变。
         final的局部变量(形参)的值不能被改变——-可防止改变。
         final的方法不能被重写。
         final的类不能够被继承。