Java基础(1)
面向对象编程
面向对象编程(Object-Oriented Programming,简称 OOP)是一种编程范式,它使用对象(Object)的概念来设计软件。
三大特性
- 封装(Encapsulation)
将对象的状态(属性)和行为(方法)结合在一起,对外隐藏实现的细节。通过使用访问修饰符限制访问,例如private,public和protected。确保对象的状态不会被外部直接访问和修改,保护对象的完整性。
优点:
- 提高安全性
- 降低复杂性
- 提高可维护性
- 增强灵活性
java支持4种访问权限
修饰符 当前类 同一个包 子孙类(同一包) 子孙类(不同包) 其他包 public Y Y Y Y Y protected Y Y Y Y/N N default Y Y Y N N private Y N N N N
- 继承(Inheritance)
允许我们创建一个新类(子类或派生类)来继承(父类或基类)的属性和方法。这样做的好处是新类可以重用父类的代码,从而减少代码的重复性,提高代码的可维护性和可扩展性。子类还可以根据自己的需要,对父类的行为进行扩展或覆盖,这使得我们可以在保持父类通用性的同时,为子类添加特定的功能。
- 多态(Polymorphism)
多态是指允许使用子类的对象来替代父类的对象,从而在运行时可以动态决定具体使用哪个子类的对象。多态性提高了程序的灵活性和可扩展性。在面向对象编程中,多态通常通过接口(Interface)和抽象类(Abstract Class)来实现。方法的重载(Overloading)和重写(Overriding)也是实现多态的方式。重载是指在同一个类中,可以有多个同名的方法,但它们的参数列表必须不同;而重写则是指子类可以提供一个与父类中具有相同名称和参数列表的方法,从而覆盖父类中的方法。
多态分为
编译时多态
重载(overload)就是编译时多态的例子,编译时多态在编译时就已经确定,运行的时候调用的是确定的方法。
运行时多态
运行时多态有三个条件:
- 继承
- 覆盖(重写)
- 向上转型
面试题
- 面向对象和面向过程的区别
- 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题。
- 面向对象会先抽象出对象,然后用对象执行方法的方式解决问题。
面向过程
**优点:**性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源:比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
**缺点:**没有面向对象易维护、易复用、易扩展。
面向对象:
**优点:**易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
**缺点:**性能比面向过程低。
- 重载和重写的区别是什么
重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理
重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。