1,类的概念
2,使用static 声明的域可以被类的所有对象共享,他不需要类的实例化,可以用类直接调用,在加载内存时就开辟了内存空间
3,final 变量在其初始化之后就不能改变了——任何试图对这种域赋值的操作将导致编译时错误
这种域必须在类初始化之后或者在类的对象完全构造完成之后立即初始化,否则编译器将拒绝编译
4,方法的重载,方法重载具有在类中用相同的名字定义多个方法的能力,方法调用时,
编译器根据传递给方法的参数个数选择正确的方法。这意味着重载的方法必须有不同数目或类型的参数
(注意:不能通过返回值的类型来进行方法重载)
5,多态是指在一棵继承树中的类可以有多个同名但不同方法体以及不同形参的方法。
两种情况:
覆盖:在子类中直接定义和父类同样的属性和方法,但重新编写了方法体,即子类与父类方法的星参与返回值都相同,
而内部处理不同,这种方法在使用过程中,Java虚拟机会根据调用这个方法的类来确定哪个方法被调用
重载:同一个类定义中有多个同名的方法,但有不同的形参,而且每个方法有不同的方法体,调用时根据形参的个数
和类型来决定调用的是哪个方法
注:不能根据返回值的类型来区分重载的方法
6,属性的覆盖:子类可以重新定义父类的非私有属性,这样,子类定义了一个与父类同名的属性,
并且子类也继承了父类的该属性,在使用时通过调用该属性的变量或者方法来决定使用哪一个
7,用final修饰的方法是不能被子类覆盖的,只能被重载
8,构造函数的继承:
子类只继承父类的默认构造函数,既无形参构造函数,并且在创建对象时先调用这个构造函数对对象进行初始化,
然后再调用子类自己定义的构造函数,如果父类没有默认构造函数,那子类将不能从父类继承到任何构造函数,
如果父类没有定义默认构造函数,那么子类也不能定义自己的无参数构造函数。如果子类想调用父类的非默认构造函数,
必须用super 来实现。子类的构造函数的形参表只能使用父类构造函数中用过的形参表,或者是对他的扩展
9,抽象类:不能被实例化的类(以 abstract 修饰)
特点:
抽象类的属性和方法都是他的子类的公共属性和方法的集合
改变它的属性和方法一定会改变它所有子类的该属性和方法
以 abstract 修饰的方法称为抽象方法,所有的抽象方法都必须在抽象类中
抽象类中既存在抽象方法,也存在一般方法
对于父类中的抽象方法是通过覆盖的形式来实现继承的,子类必须实现父类的所有抽象方法,否则必须仍然定义为抽象类
继承不涉及构造函数的继承
10,接口的定义
概念:接口是用来实现类似多种继承功能的一种结构,他有自己的属性和方法,接口间也可以形成继承关系
与类的区别:
属性都是常量
方法都是抽象方法
11,接口与抽象类的区别
接口中不能有非抽象的方法,但抽象类中可以有
一个类能实现多个接口,但只能有一个父类
接口并不属于继承结构,他实际与继承无关,无关的类可以实现同一个接口
12,注意点:
使用 interface表示接口的定义
extends关键字引导父接口,一个接口可以有多个父接口,子接口将继承所有父接口的所有属性和方法
接口的属性必须是public static fianl修饰的(系统默认)
接口的方法系统默认为public abstract的,没有方法体
一个接口可以没有任何接口体,但大括号不能省略
一个类能实现多个接口,之间用逗号隔开
一个接口可以被多个类实现
一个类声明实现某个接口后必须实现该接口的全部方法
被实现的方法的访问控制符必须显式地使用public修饰
13,接口的嵌套
class A{
interface B{ void f1( ); }
}
interface D{
void f2( );
interface E{ void f3( ); }
}
class Bclass implements A.B{
public void f1( ){ }
}
class Dclass1 implements D{
public void f2 ( ){ }
}
class Dclass2 implements D.E{
public void f3( ) { }
}
14,静态内部类
如果一个内部类是静态内部类,那么这个类就自动成为顶级类(普通类),
他的名字和可访问性由他的包装类定义,只有在他的包装类型可访问时,他才能被访问
15,异常在继承关系中的特殊性
在子类的方法覆盖父类的方法,且父类的方法声明抛出某些异常时,
子类方法只能抛出被覆盖的方法所能抛出的异常所属的异常类或它的衍生类。
如果父类方法中未定义成抛出例外,那么子类覆盖的方法也不能抛出异常。
如果父类方法声明抛出异常,子类方法可以不声明抛出异常
父类的构造函数声明抛出的异常必须在子类的构造函数中也声明抛出,子类也可以抛出父类中根本不存在的异常
16,字符串的概念
字符串是内存中连续排列的一个或多个字符,不是字符数组。
字符串在Java语言中提供了String和StringBuffer两个类来实现。
String类用于处理那些值不会发生改变的字符串
StringBuffer类用于那些可能发生变化的字符串处理
创建String对象:
String str=“ABC”;
String str=new String( ); str=“ABC”;
char[ ] helloArray=[‘h’,’e’,’l’,’l’,’o’];
String helloString=new String(helloArray);
17,使用多线程并不一定会增加CPU的处理能力
基于Internet 的应用有必要使用多线程
18,
1、 @see :用来产生对其他javadoc 文档的交叉引用链接
2、{ @ link}:内联标记
{ @link package.class#member [ label ] }
3、@param:对方法中单个参数进行文档化说明
@param max The maximum number of words to read.
4、@ return: 对方法中的返回值进行文档说明
@return The number of words actually read.
5、@throws :对方法抛出的异常进行文档说明
@throws java.io.IOException Reading the input stream failed; this exception is passed through from the input stream.
6、@author :指定代码的作者
7、@version: 指明任意的版本规范信息
8、@since:指定任意版本规范
19,文件管理
File path=new File(“d:\\javatry\\classtry”);
File oldfile=new File(“d:\\javatry\\classtry\\My.class”);
20,流的特点是数据的发送和获取都是延数据序列顺序进行的,每个数据必须等待他前面的数据发送或读入后才能被读写
21,
1、文件输入输出:
字节:FileInputStream和FileOutputStream
字符:FileReader和FileWriter
2、内存数组:
字节:CharArrayInputStream和ByteArrayOutputStream
字符:CharArrayReader和ByteArrayWriter
3、字符串:
字节:无
字符:StringReader和StringWriter
4、管道流:
字节:PipedInputStream和PipedOutputStream
字符:PipedReader和PipedWriter
5、缓冲流:
字节:BufferedInputStream和BufferedOutputStream
字符:BufferedReader和BufferedWriter
6、过滤功能流:
字节:FilterInputStream 和 FilterOutputStream
字符:FilterReader 和FilterWriter
7、8位转16位的流:
字节:无
字符:InputStreamReader 和OutputStreamWriter
8、数据转换:
字节:DataInputStream 和DataOutputStream
字符:无
9、打印流:
字节:PrintStream
字符:PrintWriter
2,使用static 声明的域可以被类的所有对象共享,他不需要类的实例化,可以用类直接调用,在加载内存时就开辟了内存空间
3,final 变量在其初始化之后就不能改变了——任何试图对这种域赋值的操作将导致编译时错误
这种域必须在类初始化之后或者在类的对象完全构造完成之后立即初始化,否则编译器将拒绝编译
4,方法的重载,方法重载具有在类中用相同的名字定义多个方法的能力,方法调用时,
编译器根据传递给方法的参数个数选择正确的方法。这意味着重载的方法必须有不同数目或类型的参数
(注意:不能通过返回值的类型来进行方法重载)
5,多态是指在一棵继承树中的类可以有多个同名但不同方法体以及不同形参的方法。
两种情况:
覆盖:在子类中直接定义和父类同样的属性和方法,但重新编写了方法体,即子类与父类方法的星参与返回值都相同,
而内部处理不同,这种方法在使用过程中,Java虚拟机会根据调用这个方法的类来确定哪个方法被调用
重载:同一个类定义中有多个同名的方法,但有不同的形参,而且每个方法有不同的方法体,调用时根据形参的个数
和类型来决定调用的是哪个方法
注:不能根据返回值的类型来区分重载的方法
6,属性的覆盖:子类可以重新定义父类的非私有属性,这样,子类定义了一个与父类同名的属性,
并且子类也继承了父类的该属性,在使用时通过调用该属性的变量或者方法来决定使用哪一个
7,用final修饰的方法是不能被子类覆盖的,只能被重载
8,构造函数的继承:
子类只继承父类的默认构造函数,既无形参构造函数,并且在创建对象时先调用这个构造函数对对象进行初始化,
然后再调用子类自己定义的构造函数,如果父类没有默认构造函数,那子类将不能从父类继承到任何构造函数,
如果父类没有定义默认构造函数,那么子类也不能定义自己的无参数构造函数。如果子类想调用父类的非默认构造函数,
必须用super 来实现。子类的构造函数的形参表只能使用父类构造函数中用过的形参表,或者是对他的扩展
9,抽象类:不能被实例化的类(以 abstract 修饰)
特点:
抽象类的属性和方法都是他的子类的公共属性和方法的集合
改变它的属性和方法一定会改变它所有子类的该属性和方法
以 abstract 修饰的方法称为抽象方法,所有的抽象方法都必须在抽象类中
抽象类中既存在抽象方法,也存在一般方法
对于父类中的抽象方法是通过覆盖的形式来实现继承的,子类必须实现父类的所有抽象方法,否则必须仍然定义为抽象类
继承不涉及构造函数的继承
10,接口的定义
概念:接口是用来实现类似多种继承功能的一种结构,他有自己的属性和方法,接口间也可以形成继承关系
与类的区别:
属性都是常量
方法都是抽象方法
11,接口与抽象类的区别
接口中不能有非抽象的方法,但抽象类中可以有
一个类能实现多个接口,但只能有一个父类
接口并不属于继承结构,他实际与继承无关,无关的类可以实现同一个接口
12,注意点:
使用 interface表示接口的定义
extends关键字引导父接口,一个接口可以有多个父接口,子接口将继承所有父接口的所有属性和方法
接口的属性必须是public static fianl修饰的(系统默认)
接口的方法系统默认为public abstract的,没有方法体
一个接口可以没有任何接口体,但大括号不能省略
一个类能实现多个接口,之间用逗号隔开
一个接口可以被多个类实现
一个类声明实现某个接口后必须实现该接口的全部方法
被实现的方法的访问控制符必须显式地使用public修饰
13,接口的嵌套
class A{
interface B{ void f1( ); }
}
interface D{
void f2( );
interface E{ void f3( ); }
}
class Bclass implements A.B{
public void f1( ){ }
}
class Dclass1 implements D{
public void f2 ( ){ }
}
class Dclass2 implements D.E{
public void f3( ) { }
}
14,静态内部类
如果一个内部类是静态内部类,那么这个类就自动成为顶级类(普通类),
他的名字和可访问性由他的包装类定义,只有在他的包装类型可访问时,他才能被访问
15,异常在继承关系中的特殊性
在子类的方法覆盖父类的方法,且父类的方法声明抛出某些异常时,
子类方法只能抛出被覆盖的方法所能抛出的异常所属的异常类或它的衍生类。
如果父类方法中未定义成抛出例外,那么子类覆盖的方法也不能抛出异常。
如果父类方法声明抛出异常,子类方法可以不声明抛出异常
父类的构造函数声明抛出的异常必须在子类的构造函数中也声明抛出,子类也可以抛出父类中根本不存在的异常
16,字符串的概念
字符串是内存中连续排列的一个或多个字符,不是字符数组。
字符串在Java语言中提供了String和StringBuffer两个类来实现。
String类用于处理那些值不会发生改变的字符串
StringBuffer类用于那些可能发生变化的字符串处理
创建String对象:
String str=“ABC”;
String str=new String( ); str=“ABC”;
char[ ] helloArray=[‘h’,’e’,’l’,’l’,’o’];
String helloString=new String(helloArray);
17,使用多线程并不一定会增加CPU的处理能力
基于Internet 的应用有必要使用多线程
18,
1、 @see :用来产生对其他javadoc 文档的交叉引用链接
2、{ @ link}:内联标记
{ @link package.class#member [ label ] }
3、@param:对方法中单个参数进行文档化说明
@param max The maximum number of words to read.
4、@ return: 对方法中的返回值进行文档说明
@return The number of words actually read.
5、@throws :对方法抛出的异常进行文档说明
@throws java.io.IOException Reading the input stream failed; this exception is passed through from the input stream.
6、@author :指定代码的作者
7、@version: 指明任意的版本规范信息
8、@since:指定任意版本规范
19,文件管理
File path=new File(“d:\\javatry\\classtry”);
File oldfile=new File(“d:\\javatry\\classtry\\My.class”);
20,流的特点是数据的发送和获取都是延数据序列顺序进行的,每个数据必须等待他前面的数据发送或读入后才能被读写
21,
1、文件输入输出:
字节:FileInputStream和FileOutputStream
字符:FileReader和FileWriter
2、内存数组:
字节:CharArrayInputStream和ByteArrayOutputStream
字符:CharArrayReader和ByteArrayWriter
3、字符串:
字节:无
字符:StringReader和StringWriter
4、管道流:
字节:PipedInputStream和PipedOutputStream
字符:PipedReader和PipedWriter
5、缓冲流:
字节:BufferedInputStream和BufferedOutputStream
字符:BufferedReader和BufferedWriter
6、过滤功能流:
字节:FilterInputStream 和 FilterOutputStream
字符:FilterReader 和FilterWriter
7、8位转16位的流:
字节:无
字符:InputStreamReader 和OutputStreamWriter
8、数据转换:
字节:DataInputStream 和DataOutputStream
字符:无
9、打印流:
字节:PrintStream
字符:PrintWriter