java回忆录—基本特性
java2016-08-01
Java语言是一个支持网络计算的面向对象程序设计语言。Java语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。谈到Java语言大家应该都会想到它的三大基本特性:
a.封装
什么叫封装呢,简单来说就是:
属性的隐藏
实现细节的隐藏
原则:当相同功能的代码出现两次及以上时,就要提取封装。
b.继承
什么叫继承?就是子类继承父类。使用关键字 extends
在继承关系经常会不可避免的遇到两位常客: this、super
this的两种含义:
指向当前对象 如:this.id = id;
调用当前类中其他构造函数 如:this();
super的两种含义:
指向当前对象的父对象
调用当前类的父类的构造函数
eg:
//现在有个父类叫做Parent
public class Parent {
private Long id;
public Parent() {
this(1000); //这行代码表示在此构造函数中调用当前类的含有一个参数的构造函数
}
public Parent(Long id) {
this.id = id;
}
}
public class Son extends{
public Son() {
super(); //这行代码表示调用当前类的父类的无参构造函数
}
}
但是需要注意的一点:
当创建子类对象的时候要调用子类构造函数,在子类构造函数的第一行会默认调用父类的无参构造函数,
当父类中没有无参构造函数,子类必须显示调用父类的有参构造函数。
c.多态
什么是多态?通过传递给父类对象引用不同的子类对象从而表现出不同的行为。
需要注意的是:
父类类型的引用指向子类对象,通过该引用只能调用父类中有的方法,而不能调用子类中特有的方法;
如果子类重写了父类的方法,通过该引用调用父子类的共有的方法时体现子类的特点。
在多态中会涉及到重写的概念:(这里就拿重写和重载做个比较)
重写(也叫覆盖)
发生在父子类中;
子类中的方法与父类中的方法方法名相同,参数相同,返回值也相同。
方法修饰符不能被缩小
异常不能被放大
重载
发生在同一个类中;
两个方法的方法名相同,参数不同(类型,个数,顺序),返回值类型可以相同也可以不同,如
double add(double a,int b);
double add(int a ,double b);
当然也有的地方会总结为四大特性,那就需要再增加一个抽象的特性:
什么叫抽象?就是将一类实体的共同特性抽象出来,封装在一个抽象类中,所以抽象在面向对象语言中是由抽象类来体现的。
比如鸟就是一个抽象实体,因为抽象并不是一个真正的对象,它的属性还不能完全描述一个对象。
当然出了以上基本特性以外,java语言还有许多特点,主要特特点如下:
1)Java语言是简单的。
Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。
另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。
特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。
2) Java语言是一个面向对象的。
Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。
Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
3)Java语言是分布式的。
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),
它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。
Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
4) Java语言是健壮的。
Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。
对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。
5) Java语言是安全的。
Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。
除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),
如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。
6)Java语言是体系结构中立的。
Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。
这种途径适合于异构的网络环境和软件的分发。
7)Java语言是可移植的。
这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。
Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。
8)Java语言是解释型的。
如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。
在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
9)Java是高性能的。
与那些解释型的高级脚本语言相比,Java的确是高性能的。
事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。
10)Java语言是多线程的。
在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。
通常有两种方法来创建线程:
其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程。
其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。
值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。
线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
11)Java语言是动态的。
Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能动态地被载入到运行环境,
也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。