您的位置:首页 > 其它

J2SE知识点摘记(四)

2013-07-08 23:28 141 查看
1、 抽象类(abstract)

抽象类和抽象方法都必须用abstract关键字来修饰.

抽象类不能被直接实例化,也就是不能直接用new关键字去产生对象.

抽象方法只需声明,而不需实现.此方法只声明了返回值的数据类型,方法名称与所需的参数,但没有定义方法体.

含有抽象方法的类类必须被声明为抽象类,抽象类的子类必须覆写所有的父类的抽象方法后才能被实例化,否则这个子类还是个抽象类类.例如:abstract class Person中声明一抽象方法talk public abstract String talk();//并没有定义方法体,在继承Person的子类中再在覆写"public String talk(){................};".

与一般类相同,在抽象类中也可以拥有构造方法,但是这些构造方法必须在子类中被调用.例如:"super(name,age,occupation);注意:父类构造方法可以定义方法体.

抽象类也可以想普通类一样,有构造方法,一般方法和属性,更重要的还可以有一些抽象方法,留给子类实现,而且在抽象类中声明构造方法后,在子类中必须明确调用.

2、 接口(interface)

它的结构和抽象类非常相似,也具有数据成员与抽象方法,但它与抽象类又有一下两点不同.

接口里的数据成员必须初始化,且数据成员均为常量.

接口里方法必须全部声明为abstract,也就是说,接口不能像抽象类一样保有一般的方法,必须全部都是抽象方法.

Interface 接口名称 //定义抽象类

{

final 数据类型 成员名称=常量; //数据成员必须赋初值,且此值不能在更改

abstract 返回值的数据类型 方法名称 (参数......);

//抽象方法,注意在抽象方法里没有定义方法主体

}

事实上只要记住一下两点即可.

接口里的抽象方法只要做声明,而不用定义其处理的方式.

数据成员必须赋初值.

3、 每一个由接口实现的类必须在内部覆写接口中的抽象方法,且可自由地使用接口的常量.利用接口打造新的类的过程,称之为接口的实现(implementation).

Class 类名称 implements 接口A,接口B {} //接口的实现,多个接口

4、 接口是是java实现多继承的一种机制,一个类只能继承一个父类,但如果需要一个类继承多个抽象方法的话,就明显无法实现,所以出现了接口的概念.一个类只可以继承一个父类,但却却可以实现多个接口.

Interface 子接口名称 extends 父接口1,父接口2...{}

5、 通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例.在成员的声明前面加上关键字static(静态的)就能创建这样的成员.如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象.你可以将方法和变量都声明为static.static 成员的最常见的例子是main().因为在程序开始执行时必须调用main() ,所以它被声明为static.(不用创建对象也可以调用static方法和变量)

例子:System.out//此处out为静态方法

6、 声明为static的方法称为静态方法或类方法.静态方法可以直接调用静态方法,访问静态变量,但是不能直接访问实例变量和实例方法.静态方法中不能使用this关键字,因为静态方法不属于任何一个实例.静态方法不能被子类的静态方法覆盖.

7、 外部类无法找到内部类中所声明的属性,而内部类则可以访问外部类的属性.

8、 用static可以声明属性或方法,而用static也可以声明内部类,用static声明的内部类则变成了外部类,但是用static声明的内部类不能访问非static的外部类属性.

9、 内部类也可以通过创建对象从外部类之外被调用,只要将内部类声明为public即可.(用public声明一个内部类,此内部类可被外部类访问).

10、 在方法中定义的内部类只能访问方法中的final类型的局部变量,因为用final定义的局部变量相当于一个常量,它的生命周期超出方法的生命周期.(内部类可直接引用外部类的方法和变量,但是要访问方法(内部类被定义的方法)中的变量要加上final声明).

11、 匿名内部类和匿名对象

用"new 类名()"声明出的对象并没有付给任何一个类对象的引用,所以此对象只使用了一次,之后就会被java的垃圾收集器回收.例子:System.out.println(new Person().talk());

12、 在在static方法内只能访问到static成员变量(包括数据成员和方法成员)之故,特别注意main()方法本身是是static的.

13、 如果要传递数组到方法里,只要在方法内填上数组的名称即可.例子:

int score[]={3,7,5,6,5,6,5}largest(score);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: