Java的特点
1.面向对象
Java面向对象的几个特征分别为:封装、继承、抽象、多态。
(1)封装
Java中的封装是指一个类把自己内部的实现细节进行隐藏。只暴露对外的接口(setter和getter方法)。封装又分为属性的封装和方法的封装。把属性定义为私有的,他们通过setter和getter方法方法来对属性的值进行设定和获取。把对象的全部属性和全部功能结合在一起,形成不可分割的独立的单位(对象);信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界[或者说形成一道屏障],只保留有限的对外接口使之与外部发生联系。
封装的优点:使对象意外的部分不能随意存取对象内部的数据,有效避免交叉感染,使软件错误局部化,减少查错和排错的难度。
public class Person{
private int id;
private String name;
private Person person;
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public Person getPerson(){
return person;
}
public void setPerson(Person person){
this.person = person;
}
}
在Person类中,定义了三个全局变量,分别为id、name、person,它们的访问修饰符都是private私有的,通过setter和getter方法对这些变量进行设值以及取值。那么这么做有什么好处呢?封装的意义就是增强类的信息隐藏与模块化,提高安全性。封装的主要作用也是对外部隐藏具体的实现细节,增加程序的安全性。
(2)继承
使用一个特殊类拥有其全部的属性和功能。作为父类,它可以有多个子类,一般的类去实现,比如:父类为人,子类可以是男人和女人,男和女都继承于父类,但是一个子类只能继承一个特殊类,不能继承多个。但一个一般类可以实现多个接口。子类继承父类的时候,可以重写父类的方法,也可以有自己的方法。
继承的好处是实现代码的复用以及扩展,子类通过父类代码的复用,可以不用再定义父类中已经定义的全局变量,方法上直接对父类方法进行重写实现了扩展。
(3)抽象
Java中抽象可以是抽象类、抽象方法,使用abstract修饰。其中抽象类中可以有抽象方法和非抽象方法,具有抽象方法的类一定是抽象类。抽象方法一般只有方法名,没有方法的实现。如:
public abstract void test();
且抽象方法的权限修饰必须是protected public的,因为子类在继承抽象父类的时候,必须要实现父类所有的抽象方法。
(4)多态
多态就是指多种状态,就是说当一个操作在不同的对象时,会产生不同的结果。
在Java中,实现多态的方式有两种,一种是编译时的多态,另外一种是运行时的多态,编译时多态是通过方法的重载实现的,而运行时多态是通过方法的重写实现的。
方法的重载是指在同一个类中,有多个方法名相同的方法,但是这些方法有着不同的参数列表,在编译期我们就可以确定到底调用哪个方法。
方法的重写,子类重写父类中的方法(包括接口的实现),父类的引用不仅可以指向父类的对象,而且还可以指向子类的对象。当父类的引用指向子类的引用时,只有在运行时才能确定调用哪个方法。
其实在运行时多态的实现,需要满足三个条件:1)继承2)重写3)父类对象引用指向子类对象,并且,我们说的多态都是类中方法的多态,属性是没有多态性的。方发的重载我这里就不举例说明了,我说一下运行时的多态。
接口:
package Review.duotai;
public interface Animal {
public void shout();
}
实现类:
package Review.duotai;
public class Dog implements Animal {
@Override
public void shout() {
System.out.println("wangwang...");
}
}
实现类:
package Review.duotai;
public class Cat implements Animal {
@Override
public void shout() {
System.out.println("miaomiao...");
}
}
测试:
package Review.duotai;
public class Test {
public static void main(String[] args) {
Animal d = new Dog();
animalShout(d);
Animal c = new Cat();
animalShout(c);
}
public static void animalShout(Animal animal) {
animal.shout();
}
}
多态优点:
①可替换性(substitutability):多态对已存在代码具有可替换性。
②可扩充性(extensibility):多态对代码具有可扩充性。
③接口性(interface-ability):多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
④灵活性(flexibility):它在应用中体现了灵活多样的操作,提高了使用效率。
⑤简化性(simplicity):多态简化对应用软件的代码编写和修改过程。
2.简单容易
Java系统所占空间很小,语言风格类似C++,但是相对于C语言/C++来说,语法简单了不少,Java弱化了指针地址*p的概念,不再说指针,而是使用了引用的概念来解释指针。
3.代码开源
4.代码安全
5.GC(垃圾回收机制)Garbage Collection
java的语法限制了源程序的安全性,首先编译器会进行源代码的第一步检查。GC垃圾回收机制,通过轮询机制发现垃圾空间(没有在使用空间)就释放掉OC引用计数机制,在使用的空间下被使用时就会被系统自动释放。
6.跨平台(OS);一处编写,到处运行(writer one run anywhere)
Java程序在不同的平台上都可以运行,写一份代码使用不同的平台,其实Java代码不能直接运行,需要一个编译过程(java开发流程)。首先编辑java源程序,将.java文件编译成.class字节码文件,.class文件是运行在java虚拟机上的,通过java虚拟机把.class文件最终翻译成操作系统能处理的指令,只要操作系统安装了java虚拟机,就可以做到java在各个平台的java虚拟机上运行。
java跨平台的前提条件:
JRE:Java Runtime Environment