【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
java号称是最面向对象的语言。诚然,java克服了很多c++的缺点,同时兼具虚拟机、垃圾回收、跨平台等很多优点,java的确是一门非常优秀的语言。因此,我们有必要好好的说一说java的类特性。
1、主类和普通类
java文件的特点,决定了文件名和主类必须是一样的。假设文件是node.java,那么主类一定是public class node。至于其他的class只能是普通类。
class parent {
}
public class node {
public static void main(String[] args){
return;
}
}
2、类函数和成员函数
如果函数可以通过类名可以直接访问,那么这个函数肯定是类函数,也就是static函数。当然,如果函数需要类实例化后才能访问,那么就是普通的成员函数。
public class node {
public int process(){
return 1;
}
public static void main(String[] args){
return;
}
}
3、继承、封装、多态
继承、封装、多态是面向对象的基本特性。这一点在java上面表现得淋漓尽致,因为几乎所有的文件都是类,连通用函数也被设计成static函数。
class parent {
String name;
public void parent(String name){
this.name = name;
}
public void show(){
System.out.println("parent");
}
}
class child extends parent{
public void show() {
System.out.println("child");
}
}
4、abstract类
abstract类是不能实例化的类,它一般由abstract function和普通function构成。有了abstract function,我们可以将那些需要定制化的function放到子类来处理。
abstract class parent {
String name;
public void parent(String name){
this.name = name;
}
abstract public void show();
}
class child extends parent{
@Override
public void show() {
System.out.println("child");
}
}
5、interface类型
interface类型可以看成是abstract类的升级版。interface中的函数不允许实现。且interface中不允许出现成员变量,同一个子类可以实现多个interface,使用起来非常方便。这也相当于从另外一个角度实现了多重继承的功能。
interface process {
public void show();
}
class child implements process{
@Override
public void show() {
System.out.println("child");
}
}
6、内部类
内部类,是指那些可以在function、class、public class内部定义的类。这些类一般用于本文件使用,主要是为了本地的数据管理使用,不对外公开。
class parent {
class inner {
}
}
7、匿名类
对于某一些只使用一次的子类,我们可以直接用匿名类进行编写。匿名类相当于一般的子类,只是我们使用的时候一般直接进行new处理,这相当于不需要对子类重新命名了,故由此得名而来。
class parent {
class inner {
void show() {}
}
inner i = new inner(){
void show() {
System.out.println("show");
}
};
}
8、异常类
异常类主要是以Exception为基础的类型,它主要用来处理NULL指针、除0运算、键盘中断、文件读取失败等异常。异常一般需要在function中显示进行throw处理。
public class node {
public static void main(String[] args){
try{
int a = 5/0;
}catch(Exception e){
}
return;
}
}
9、类的泛型处理
类的泛型处理,这一点有点像c++下面的template。java下面除了String、StringBuffer、IO、File、InputStream、OutputStream这些类之外,就属Array、Set、Hash、Map这些泛型类用的最多,建议大家好好掌握。
class generic{
}