1.面向对象和面向过程的理解?
面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做?
面向对象:将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。
以下面一幅图形象展示:
总的来说,面向过程比较少的调用类实例以及各种借口,开销会小很多,比较节约资源;面向过程更容易代码复用和拓展,更加易于维护。
2.面向对象有什么特点?
- 封装:类自身和外界的封装关系。把客观事物封装成抽象的类,并且类可以把⾃⼰的数据和⽅法只让可信的类或者对象操作,对不可信的进⾏信息隐藏。
- 继承:父类和子类的继承关系。它可以使⽤现有类的所有功能,并在⽆需重新编写原来的类的情况下对这些功能进⾏扩展。
- 多态:一个类和多个类的多态关系。两个类由继承关系,存在有方法的重写,故而可以在调用时有父类引用指向子类对象。多态必备三个要素:封装、重写、父类引用指向子类对象。便于更好的理解:多态性指的是在程序中允许出现重名现象,它指在一个类中定义的属性和方法被其他类继承后,它们可以具有不同的数据类型或表现出不同的行为,这使得同一个属性和方法在不同的类中具有不同的语义。
3.类和对象是什么?
类是对象的高度抽象,对象是类的实例。
可以理解为:类 = 抽象概念的人;对象 = 实实在在的某个人
类主要由属性和方法构成。
类的语法格式:
4.成员变量(属性)和局部变量的区别?
5.Java中的值传递与地址传递(引用传递)?
- 值传递:实参传递给形参的值,实参和形参再内存上是两个独立的变量,对形参的修改不会影响实参的值;值传递传递的是真实内容的一个副本,对副本的操作不影响原内容,也就是形参怎么变化,不会影响实参对应的内容。
- 地址传递:实参是传递给形参的是堆内存上引用的地址,形参和实参在内存上指向的是同一地址,对形参的改变会影响实参;引用也就是指向真实内容的地址值,在方法调用时,实参的地址通过方法调用被传递给相应的形参,在方法体内,形参和实参指向通愉快内存地址,对形参的操作会影响的真实内容。