1、包
package mybo;
mybo包下的类在硬盘上都存在mybo的文件夹下,执行类时需要确定文件夹路径。
2、类的说明符
类的访问说明符:public default
public的类可以被包外的包里的类访问,default的类只能被同一包下的类访问。
类的其他修饰符:final ,abstract
final的类不能被继承。
3、方法的说明符
public ,protected,default ,private
同类:这四类方法都可以进行访问
同包不同类:只有private的方法不能被访问
不同包但是之间有父子关系的:只有public,protected的方法才可以访问
通用的,不同包也不存在继承关系的:只有public的可以访问
其他的方法修饰符:
static final native abstract ,synchronized
final的方法:为了确保某个方法在被继承过程中被子类覆盖或者修改,那就声明为final
class中的所有的private和static方法都是final的。
4、抽象方法和抽象类
抽象方法没有函数体。
抽象类不能进行实例化对象。
5、垃圾回收
finalize()函数,垃圾收集器在执行前会调动此函数,一般垃圾回收再虚拟机中以低线程执行,只要当内存感觉不够的时候才会允许垃圾收集器。
6、接口
接口的方法都是默认的public abstract的,所以我们在实现一个接口时,需要用public声明。
在接口中声明方法时,不能使用native static final private protected synchronized.
接口可以用public default修饰
接口可以用数据成员,这些数据成员默认是public static final 即共有的静态常量。
7、内部类
在一个类中定义另一个类叫做内部类,
内部类可以将逻辑上相关的类串联起来。并由外部类控制内部类的可见性。
内部类字节码的文件名:外部类名¥内部类名组成
当我们创建了一个内部类,其对象就拥有了与外部类对象的一直关系,这是通过一直特殊的this reference形成的。
(使用new创建的对象保存在堆内存中,其引用保存在栈内存中,)
内部类可以访问外部类的所有的成员,主要有你对象中保存了外部类的this对象。
内部类访问自身的成员变量:this.X,访问外部类的成员变量:O.this.X(o是外部类,y是内部类名)
内部类不能用new 去直接创建,而是o.new y() (o=new O())
内部类的修饰内同于类中的方法(public,protect default private。。。)
当内部类被定义为static时,我们就不需要声明外部类的对象了,就可以直接访问内部类,同时内部类不能访问外部类的非静态方法和变量了。
没有用static修饰内部类时,其不能有静态的方法。
内部类的继承: 派生类在产生对象时会去先调用父类的构造函数,这就需要内部类的对象,而内部类的对象需要先产生外部类,从而建立内部类到外部类的引用关系,
故派生类的构造函数需要传入外部类的对象,然后通过外部类对象.super()方式来建立从内部类对象到指定外部类的引用关系,例如:
public class test extends outer.inner{
/**
* @param args
*/
test(outer io)
{
io.super();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
outer ou=new outer();
test ts=new test(ou);
}
}
8、异常处理
对于一般可能存在发生异常的方法,通常在方法后面throws exception 来抛出异常。而在调用方法时抛出的异常需要去捕获否则编译出错,当然也可以再次抛出将异常抛给其他方法。
语法:try/catch/catch..../finally,finally的语句无论有没有发生异常都会执行。
System.exite