Java语言的优点:
1. Java为纯面向对象语言,容易理解。
2. 平台无关性,无论你是Windows,Mac或者是Linux,都可以只用,跨平台时不会有任何错误出现。
3. Java提供了很多内置的类库,通过这些类库,程序员可以减轻工作压力。
4. 通过了对web开发的支持。
5. 有较好的安全性和健壮性。
6. 有自己的垃圾回收机制(GC)。
7. 在创建对象会自动分配内存,并当该对象的引用不存在时释放内存。
Java与C++有什么异同
1. Java是解释性语言,C/C++是编译型语言。
2. Java为纯面向对象语言,除基本数据类型都是类,java不存在全局变量或全局函数。C++兼具备面向过程和面向过程变成的特点,可定义全局变量和全局函数。
3. Java没有指针的概念。
4. Java不支持多继承,但引出接口
5. Java中提供了垃圾回收机制。
比较面向过程和面向对象的思想:
面向过程的思想:由过程,步骤,函数组成,以过程为核心。
面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间的相互通信实现功能。
面向过程是现有算法,后有数据结构。
面向对象是现有数据结构,热后再算法。
两者的出发点也不同:
面向过程是引用过程的抽象和模块化。
面向对象是强调把问题域的要领直接映射到对象及其对象的接口上。
在面向对象的开发过程中,能复用的就复用,不能复用就开发一个新的对象。
封装:是对象的属性尽可能的私有,对象的方法尽可能的公开。
都要要养成一个良好的编程习惯,其实就是在继承父类时,加上父类无参的构造方法。
关于多态
多态的实现机制是什么?
1. 方法的重载。重载指的是一个类中有多个重名的方法,这些方法的参数不同。
2. 方法的覆盖。覆盖是指子类可以覆盖父类的方法,但是同样的方法会在两个类中有不同的变现形式。(记住在继承时,一定要加上父类无参的构造方法)
重载和覆盖的区别:
重载需要注意以下几点:
1. 重载是通过不同的方法参数来区分的
2. 不能通过方法的访问权限、返回值、类型和抛出的异常来进行重载
3. 对于继承来说,古国积累方法的访问权限为private,那么就不能再子类中对其重载。
覆盖是指子类三叔覆盖父类函数。覆盖一个方法并对去重写,以达到不同的效果,在覆盖时需要注意以下几点:
1. 子类的覆盖方法必须要和父类被覆盖的方法有相同的函数名和参数.
2. 方法的返回值必须相同
3. 抛出异常一致(这里注意:在捕获异常时,应先捕获子类的异常,如果先捕获父类的异常,则子类的异常不会被捕获)
成员函数被重载的特征如下:
1. 相同的范围(在同一个类中)
2. 函数名字相同
3. 参数不同
4. 关键字可有可无
覆盖的特征:
1. 不同的范围(分别位于子类与父类)
2. 函数名字相同
3. 参数相同
4. 一个方法不能再同一个类中被覆盖,子类函数必须有关键字
不能继承的情况:匿名的内部类是没有名字的内部,不能extends其他类,但一个内部类可以作为一个接口,有另一个内部类来实现。
另外继承需要注意的几点:
1. 实体类继承一个抽象类,必须覆盖抽象方法
2. 抽象类继承一个抽象类,可以覆盖也可以不覆盖方法
抽象类必须被继承使用,抽象类不能生成实体