1,成员变量与局部变量的区别
1,成员变量是独立于方法外的变量,局部变量是类的方法中的变量
(1)成员变量:包括实例变量和类变量,用static修饰的是类变量,不用static修饰的是实例变量,所有类的成员变量可以通过this来引用
(2)局部变量:包括形参,方法局部变量,代码块局部变量,存在于方法的参数列表和方法定义中以及代码块中
2,成员变量可以被public,protect,private,static等修饰,而局部变量不能被控制修饰符及static修饰,二者都可以定义成final型
3,局部变量存储在堆,局部变量存储在栈,局部变量的作用域仅局限于定义它的方法,在该方法的外部无法访问它。成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它。如果访问权限允许,还可以在类的外部使用成员变量
4,局部变量的生存周期与方法的执行周期相同,当方法执行到定义局部变量的语句时,局部变量被执行,执行到它所在的作用域的最后一条语句时,局部变量被销毁。类的成员变量,如果是实例成员,它和对象的生存期相同,而静态成员变量的生存期是整个程序运行期
5,成员变量在累加或实例被创建时,系统自动分配内存空间,并在分配空间后自动为成员变量指定初始化值,初始化值为默认值,基本类型的默认值为0,复合类型的默认值为null(被final修饰且没有static的必须显示赋值),局部变量在定义后必须经过显式初始化后才能使用,系统不会为局部变量执行初始化
6,局部变量可以和成员变量同名,且在使用时,局部变量具有更高的优先级,直接使用同名访问,访问的是局部变量,如需要访问成员变量可以用this.变量名访问
2,面向对象的三大特征
封装,继承,多态
3,普通类和抽象类的区别
java普通类和抽象类的区别:
-
实例化:普通类可以直接实例化,而抽象类不能直接实例化。需要通过子类继承并实现其中的抽象方法才能实例化。
-
抽象方法:普通类没有抽象方法,而抽象类必须至少包含一个抽象方法。抽象方法是一种只有声明,没有实现的方法,在抽象类中只能进行声明,具体的实现需要在子类中完成。
-
实现:普通类只能被继承,而抽象类既可以被继承也可以被实现。如果一个普通类实现了某个接口,那么它必须实现接口中所有的方法。
-
成员变量:普通类可以包含各种类型的成员变量,包括静态变量和实例变量,而抽象类也可以包含这些类型的成员变量,除此之外还可以包含静态常量。
-
多态:普通类也支持多态性,但是抽象类更适合用来实现多态性,因为抽象类可以通过向上转型将其子类对象赋给父类引用,从而实现多态性。
-
普通类是一种可以直接实例化的类,而抽象类则是一种不能直接实例化的类,需要通过子类继承并实现其中的抽象方法才能实例化。抽象类和普通类之间有许多区别,主要是在抽象方法、实现和多态性方面。