Java 与 C++ 的区别
- Java 是纯粹的面向对象的语言,所有的对象都继承 java.lang.Object;C++ 既支持面向对象也支持面向过程。Java和C++都具有面向对象的三大特性,也就是继承、封装和多态。
- Java 通过JVM虚拟机实现跨平台的特性; C++ 依赖于特定的平台。
- Java 没有指针; C++ 有指针。
- Java 支持自动垃圾回收;C++ 需要手动回收。
- Java 不支持多继承; C++ 支持多继承。
面向对象和面向过程的区别
- 面向过程是先分析出解决问题需要的步骤,然后用函数把这些步骤一个个实现,使用的时候依次调用,面向过程的核心是过程。
- 面向对象是把构成问题的事物分解成一个个对象,建立对象不是为了实现一个步骤,而是为了描述某个事物在解决问题中的行为,面向对象的核心是对象。
继承、封装和多态
- 封装:将对象中不需要让外界访问的成员变量和方法私有化,只提供符合开发者意愿的公有方法来访问这些数据和逻辑,保证了数据的安全和程序的稳定。
- 继承:当多个类存在相同的属性和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法了,只需要通过extend语句继承父类即可,这样,子类就会自动拥有父类定义的属性和方法,达到代码复用的效果。Java 是单继承,一个类只能继承一个父类。
- 多态:指同一个行为具有多种不同的表现形式,有三种方式来实现多态:子类继承父类,子类重写父类的方法,父类型的引用指向子类型的对象。主要的应用有:方法的重载和重写。好处是使代码具有可替换性、扩展性、降低耦合、接口性、灵活性、简化性。在调用的时候只需将子类对象传递给基类对象,编译器将会根据具体类的对象调用相应对象的方法,从而简便了编程。
重载和重写
- 重载:是一个类中多态性的一种表现。同一个类中的方法,方法名相同,参数列表不同。
- 重写:是父类与子类之间多态性的一种表现。子类继承父类,重写父类的方法,要求方法名、参数列表相同、返回类型都相同。子类的 访问权限 >= 父类,抛出异常 <= 父类。