java 笔记

Ni 属性会被默认初始化  局部变量不会被初始化

 

静态使用的注意事项:

 

1.静态方法只能访问静态成员。(非静态既可以访问静态,又可以访问非静态)

2.

2.静态方法中不可以使用this或者super关键字。

 

3.主函数是静态的

 

 

静态什么时候用

静态变量

1,当分析对象中所具备的成员变量的值都是相同的,这时这个成员就可以用static修饰。

2,只要数据在对象中都是不同的,就是对象的特有数据,必须存储在对象中,是非静态的。

3,如果是相同的数据,对象不需要做修改,只需要使用即可,不需要存储在对象终不改,定义成静态的

静态方法

函数是否用静态修饰,就参考一点,函数内是否调用对象的特有数据;

简单点说:从源代码看,该功能是否需要访问非静态的成员变量,如果需要,该功能就是非静态的,如果不需要,就可以将该功能定义成静态的。要看是否调用非静态的成员变量

 

 

 

 

 

 

静态代码块

随着类的加载而执行,且执行一次

 

作用:给类进行初始化

如  static{

Num =10;

 

}

 

继承的特点

1.提高了代码的复用性

 

2.类与类之间产生了关系,给第三个特征多态提供了前提

 

3.Java中只支持单继承不支持多继承,不支持多继承是应为多个父类中有相同的成员,调用会有不确定性

 

 

继承中的成员函数

当子父类中出现一模一样的函数,会运行子类的函数,这种现象成为覆盖操作。

 

函数的两个特性:

 

1,覆盖  

 

2,重载  在一个类中

 

覆盖注意事项:
1,子类的方法覆盖父类的方法时,子类的方法权限大于等于父类的方法权限。

 

2,静态只能覆盖静态,或被静态覆盖(这种情况很少见)

 

 

什么时候使用覆盖操作

 

当对一个类进行子类的扩展时,子类需要保留父类的功能声明,但是要定义子类中该功能的

 

特有内容时,就使用覆盖操作完成。

 

Final关键字

1final 是一个修饰符,可以修饰类,方法,变量

 

2final 修改的类不可以被继承

 

3final 修饰的方法不可以被覆盖

 

4final修饰的变量是一个常量,只能赋值一次

 

抽象类的特点

1,方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰,抽象方法必须定义在抽象类中,该类必须也被abstract修饰。

 

2,抽象类不可以被实例化,为什么应为调用抽象方法没意义。

 

3,抽象类必须有其子类覆盖了所有的抽象方法,该子类才可以实例化。否则,这个子类还是抽象类

 

1,抽象类中有构造函数吗?

 

有,用于给子类对象进行初始化

 

2,抽象类可以不定义抽象方法吗?

 

可以的,但是很少见,目的就是不让该类创建对象,AWT的适配器对象就是这种类

 

3,抽象关键字不可以和那些关键字共存?

 

Private  static  final

 

4,抽象类和一般类的异同点。

 

相同点:

 

抽象类和一般类都是用来描述事物的,都在内部定义了成员。

 

     不同:

 

1,一般类有足够的信息描述事物。

抽象类描述事物的信息有可能不足

 

       2,一般类中不能定义抽象方法,只能定非抽象方法。

           抽象类中可以定义抽象方法,同时也可以定义非抽象方法

 

3,一般类可以被实例化,抽象类不可以被实例化。

 

  5,抽象类一定是个父类

 

 

接口interface

对于接口当中常见的成员,这些成员都有固定的修饰符

 

1,全局常量。Public static final

 

2, 抽象方法,public  abstract

 

接口的权限都是公共权限  

 

接口与接口之间是继承的关系,可以支持多继承

 

抽象类和接口的异同点:

 

相同点: 都是不断向上抽取而来的

 

不同点:

 

1,抽象类需要不被继承,而且只能单继承。

接口需要被实现,而且可以多实现。

 

2,抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。

接口只能定义抽象方法,必须由子类去实现

 

3,抽象类的继承,是 is a 关系,在定于该体系的基本共性内容

接口的实现是 like a 关系,在定义体系额外功能

 

 

 

 

多态

1,成员变量

 

编译时:参考引用类型变量所属的类中是否有调用的成员变量,有,编译通过,没

 

有编译失败

 

运行时: 参考引用类型变量所属的类中是否有调用的成员变量,并运行该所属类

 

中的成员变量

 

简单说:编译和运行都参考左边

 

     2, 成员函数(函数依赖于对象)

 

编译时:参考引用类型变量所属的类中是否有调用的函数,有,编译通过,没

 

有编译失败

 

运行事: 参考的是对象所属的类中是否有调用的函数。

 

简单说: 编译看左边,运行看右边

 

3,静态函数

 

编译时:参考引用类型变量所属的类中是否有调用的静态方法

 

编译时:参考引用类型变量所属的类中是否有调用的静态方法

 

简单说:编译和运行都参考左边

 

其实对于静态的方法,是不需要对象的。直接用雷明调用即可

 

 

内部类

1,内部类可以直接访问外部类中的成员。

 

2,外部类要访问内部类,必须建立内部类的对象。

 

 

异常

异常:是在运行时期发生的不正常情况。

 

java中用类的形式对不正常情况进行了描述和封装对象、

 

描述不正常的情况的类,就被成异常类

 

异常分为两大类

 

Throwable : 无论是error,还是异常,问题,问题发生就应该可以抛出,让调用者知道并处理

该体系的特点就在于throwable及其所有的子类都具有可抛性

 

可抛性 

Throws,throw,凡是可以被这两个关键字所操作的类和对象都具有可抛性

 

1. 一般不可处理的 error

 

2. 可以处理的 exception

 

Exception 的分类:

 

1,编译时被检测异常:只要是exception 和其子类都是,除了特殊子类runtimeexception 体系

 

这种问题一旦出现,希望在编译时就进行检测,这种问题有对应的处理方式。

这样的问题都可以针对性的处理。

 

2,编译时不检测异常(运行时异常) 就是exception中的runtimewxception和子类体系

 

这种问题的发生,无法让功能继续,运算无法进行,更多是因为调用者的

原因导致的或者引发的内部状态的改变导致的,那么这种问题一般不处理

直接编译通过,在运行时,让调用者调用时的程序强制停止,让调用者对代码进行修正

 

自定义异常时,要么继承exception ,要么继承runtimeexception

 

Throws 和 throw 的区别。

 

1throws 使用在函数上,

Throw使用在函数内

 

2throws抛出的异常类,可以抛出多个,用逗号隔开。

Throw抛出的是异常对象

 

异常处理的捕捉形式:

这是可以对异常进行针对性处理的方式。

 

具体格式是:

 

Try{

//需要被检测异常的代码

}

Catch(异常类 变量)  该变量用于接收发生的异常对象

//处理异常的代码

Finally

{

//一定会被执行的代码

}

 

 

 

 

 

posted @ 2014-03-18 08:14  nihao1314520  阅读(126)  评论(0编辑  收藏  举报