面向过程与面向对象的区别
二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的
是功能行为,以函数为最小单位,考虑怎么做。面向对象,将功能封装进对
象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。
面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如
抽象、分类、继承、聚合、多态等。
面向对象的三大特征
- 封装
- 继承
- 多态
类的访问机制:
- 在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。
- 在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中
定义的成员。
什么是方法:
方法是类或对象行为特征的抽象,用来完成某个功能操作。在某些语言中 也称为函数或过程。
将功能封装为方法的目的是,可以实现代码重用,简化代码
Java里的方法不能独立存在,所有的方法必须定义在类里。
构造器的特征
它具有与类相同的名称
它不声明返回值类型。(与声明为void不同)
不能被static、final、synchronized、abstract、native修饰,不能有 return语句返回值
关键字-package
package语句作为Java源文件的第一条语句,指明该文件中定义的类所在 的包。(若缺省该语句,则指定为无名包)。它的格式为:
package 顶层包名.子包名 ;
包的作用:
- 包帮助管理大型软件系统:将功能相近的类划分到同一个包中。比如:MVC的设计模式
- 包可以包含类和子包,划分项目层次,便于管理
- 解决类命名冲突的问题
- 控制访问权限
为什么要有继承?
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中, 那么多个类无需再定义这些属性和行为,只要继承那个类即可。
作用:
继承的出现减少了代码冗余,提高了代码的复用性。
继承的出现,更有利于功能的扩展。
继承的出现让类与类之间产生了关系,提供了多态的前提。
关于继承的规则:
子类不能直接访问父类中私有的(private)的成员变量和方法。
方法重写
定义:在子类中可以根据需要对从父类中继承来的方法进行改造,也称
为方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。
要求:
- 子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表
- 子类重写的方法的返回值类型不能大于父类被重写的方法的返回值类型
- 子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限
子类不能重写父类中声明为private权限的方法 - 子类方法抛出的异常不能大于父类被重写方法的异常
注意:
子类与父类中同名同参数的方法必须同时声明为非static的(即为重写),或者同时声明为
static的(不是重写)。因为static方法是属于类的,子类无法覆盖父类的方法。
1. 包名中的类能不能放在与包路径不同的文件路径中?
在Java中,包名和文件路径需要一致,这是Java的规范。如果有一个包名为com.example,那么该包下的所有类的源代码文件都应该在com/example/这个目录下。
如果将类放在与包路径不同的文件路径中,将会导致编译错误。
2.java中可不可以多重继承?为什么?
在Java中,一个类不能直接继承多个类。因为Java语言中的继承机制基于单一继承的概念,即一个类只能直接继承一个父类。
Java中的这种限制主要是为了简化类的继承关系和提高代码的可维护性。如果允许多重继承,可能会导致类之间的耦合度过高,增加代码的复杂性和混乱度。
为了解决多重继承的问题,Java提供了一种替代方案:接口(interface)。一个类可以实现多个接口,从而实现类似多重继承的功能。通过实现多个接口,类可以继承多个接口中的方法和属性,从而实现更加灵活和可维护的代码设计。
3.子类在继承父类的同时,能不能出现同名不同类型的参数?
在Java中,子类可以拥有与父类相同名称但不同类型的方法参数。这种行为被称为方法重载 需要注意的是,虽然子类可以重载父类的方法,但子类不能重写)父类的方法。重写要求子类的方法具有与父类方法相同的方法名称、参数列表和返回类型。如果子类想要改变父类方法的实现,应该使用与父类方法不同的方法名称和参数列表。
4.面向对象特征?
- 封装:封装是将数据和操作数据的函数绑定在一起,形成一个独立的实体,称为对象。对象的属性和方法都是封装的体现。封装可以隐藏对象的内部实现细节,只通过外部接口与外部交互,增强了数据的安全性和保密性。
- 继承:继承是从已有的类派生出新类的过程,新类继承了父类的所有属性和方法,并且可以添加新的属性和方法或覆盖父类的方法。继承可以实现代码的重用,并且通过继承可以形成层次结构,使得类与类之间具有明确的关联关系。
- 多态:多态是指一个接口可以有多种实现方式,或者一个对象可以表现出多种形态。多态可以提高代码的灵活性和可扩展性,使得程序可以根据需要选择合适的实现方式。在面向对象编程中,多态的体现包括方法重载和重写等。
- 抽象:抽象是通过定义只包含基本属性和行为的类或接口来描述对象的结构和行为的过程。抽象可以隐藏对象的某些细节,只关注对象的主要特征和行为,从而简化复杂的问题。抽象是面向对象编程中非常核心的概念之一。