【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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; } public void show(){ System.out.println("parent"); } } 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<E>{ }