论坛首页 入门技术论坛

大三第一学期Java课程期末复习笔记整理 (1)

浏览 1781 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-01-27   最后修改:2010-01-27
OO

      是我在刚刚过去的一学期Java课程的期末复习笔记,基于机械工程出版社的《Java程序设计》( 刘慧宁等编著),考试97分的哦,希望对学弟学妹有帮助。

       里说明的一点的是,以下的一切要点均是我在复习的过程中个人认为值得记录的,不代表Java的重点。

1.Java为什么平台无关
    因为Java代码在JVM中是以一种叫字节码的特殊机器码,是一种虚拟的机器码,不面向某种特定的机器。

2.javac.exe        Java编译程序---》产生class类的对象
  java.exe         Java解释程序
 
3.applet程序中没有main()方法作为入口。

4.Java中,boolean和其他类型数据不能相互转换。

5.char类型数据可参与算术运算,其值为Unicode码值,所以Java中将char归为整数类型。

6.Java中所有基本数据类型占用的存储空间和取值范围是固定的——》平台无关。

7.Java不是一种纯粹的面向对象语言。

8.void方法可以有return语句==》 return;

9.方法重载,方法中相同,参数列表不相同。

10.构造方法: public 类名();        不是没有返回值,不是void方法,而是:一个引用值,包括该对象的内存地址等信息。

11.基本数据和对象作为方法参数里,传递机制不同,前者传递的是值,后者传递的是引用。

12.数据成员的默认初始化:  boolean-false,char-"",byte-0,short-0,int-0,long-0,float-0.0f,double-0.0(0.0d).

13.Java中的对象引用初始值是null,如果访问其成员会报NullPointor异常,但是编译器不能发现这个错误。

14.Java中类的默认构造方法只在该类没有定义任何构造方法里有用,当有自定义的构造方法里,编译器不会再产生一个的构造方法了.(注意,这里的构造方法和无参构造方法有一定的差异的).

15.类(内部类除外),只能用public或没有显式修饰来修饰,不能用其他修饰符(private,protected)来控制类的访问权限.

16.成员访问权限控制
                public   所有类可以访问
                protected 同个包中的所有类以及所在类的子类
                friendly(默认的修饰符) 同一个包中的所有类,子类不能。
                private 只有自己可以使用

17.static 修饰类的一个成员变量时,只保留一份存储空间,并且直接通过类名即可访问之。
             类的对象同样可以访问之,
             利用static从句初始化static成员的典型例子:
            

//StaticInit.java
			class Cat
			{
				Cat(int i){
					System.out.println("Cat("+i+")");	
				}
				
				void f(int i){
					System.out.println("f("+i+")");
				}
			}
			
			class Cats{
				static Cat c1;
				static Cat c2;
				static 
				{
					c1 = new Cat(1);
					c2 = new Cat(2);
				}	//static 从句结束
				
				Cats(){
					System.out.println("Cats()");
				}
			}
			
			
			public class StaticInit{
				public static void main(String[] args)
				{
					System.out.println("mian()");
					Cats.c1.f(7);
					Cats c = new Cats();
				}
			}
 

             static修饰的方法不能访问类中的其它非static成员。
     
18.如果一个尖中的成员变量或是成员方法是protected的,很显然,不同包中的非子类将不能访问这个方法或是变量,可是,如果有子类继承这个类,那么别的类的类通过这个子类依然不能访问父类中的protected成员。

19.java在创建子类对象的时候,会自动调用父类的构造方法,变回的是初始化从父类中继承的数据成员。
    自动调用的是父类的默认构造方法.
    另一种自定义的调用是用super(param list),用这种方法的时候必须将super(param list)放在子类构造方法的第一句话.
      
20.如何理解"与关键字this相同,类方法中没有相应的super引用"
    不能把this和super就当作类来使用,如:super s = new super(); 这是错误的。
   
21.在继承内容中还应该注意的一点是注意的是要明白:
        什么是重载,什么是重写。
        子类对父类方法进行overwrite时,只能提高其访问权限,即:private--》protected--》public 反向不行,编译器会报错。
        final方法可以重载,不可重写
        类的私有方法都是final的,但子类中可以构造一个名字相同一样的方法,原因在于private对于子类不可见,于是这个过程不是覆盖,而是子类中写了一个和父类相同但是却没有任何关系的方法。
       
22.final类,无子类,不可被继承
        所有方法均是final的,可以不显示的指明
        所有数据成员可以不是final的,且默认不是final的。

23.类因有抽象方法成为抽象类,abostact
   所以并不是抽象类必须要有抽象方法的,也就是说可以出现如下情况:
   一个抽象类中没有一个抽象方法。
  
24.抽象类不能实例对象。

25.子类继承抽象类时,不必一定要实现父类的所有抽象方法的,如果子类没有完全继承父类的所有抽象方法时,这个子类还是抽象的。

26.interface中
        方法默认是public abstract的,不必显示声明
        数据成员默认是public final static的,也不必显示声明。
       
27.和继承抽象类一样,implements接口的时候,也不一定要实现接口中的所有方法,如果没有实现上一个接口的所有方法时,则必须声明为abstract。

28.当子类继承一个类,并实现多个接口时的问题:
  

interface A{
	int I = 10;
	void f();
}

interface B{
	int I=2;
	int f(int i);
}

class C{
	public void fun(){	}
	
}

class D extends C implements A,B{
	int i = A.I;   //访问第一名的常量时必须以接口的名字为前缀
	public int f(int i ){
		return i;
	}
}

 

分析以上代码,我们可以得出以下结论

 

1.如果接口和父类中同时有一个同名的变量,那么子类访问这些变量时必须以类名,r接口名作为前缀,如:A.I,B.I……,

 

2.如果子类 D 从父类继承的方法已经可以实现某个接口中的方法时,则可以不必来对这个方法进行重写以达到实现的目的,当然,重写后实现是允许的。

 

3.注意以下两类接口的不可同时实现性:

 

 

interface A{

     void f();
}
interface B{
   int f();
}

     仅仅方法类型不一样的方法无法同时进行实现。

 

 

后续:http://nileader.iteye.com/blog/581210

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics