目录
成员变量和局部变量的区别
区别 | 成员变量 | 局部变量 |
---|---|---|
类中位置不同 | 类中方法外 | 方法内或者方法声明上(形参) |
内存中的位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随着对象的存在而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的调用完毕而消失 |
初始化值不同 | 有默认的初始化值 | 没有默认的初始化值,必须先定义,赋值,才能使用 |
面向对象三大特征
封装
隐藏实现细节,仅对外暴露公共的访问方式
封装常见的体现:
-
私有成员变量,提供set、get方法
-
将代码抽取到方法中,这是对代码的一种封装
-
将属性抽取到类当中,这是对数据的一种封装
封装的好处:
-
提高了代码的安全性
-
提高了代码的复用性
继承
继承的特点:
java只支持单继承,不支持多继承,支持多层继承
在子类方法中访问一个变量:子类局部->子类成员->父类成员
注意:如果子父类中,出现了重名的成员变量,通过就近原则,会优先使用子类的
继承的好处:
-
提高了代码的复用性
-
提高了代码的维护性
-
让类与类之间产生了关系,是多态的前提
继承的弊端:
-
继承是侵入性的
-
降低了代码的灵活性
-
增强了代码的耦合性
多态
多态的前提:
-
要有(继承\实现)关系
-
要有方法重写
-
要有父类引用,指向子类对象
多态中成员访问的特点:
-
构造方法:同继承一样,子类会通过super访问父类构造方法
-
成员变量:编译看左边(父类),运行看左边(父类)
-
成员方法:编译看左边(父类),运行看右边(子类)
多态的好处和弊端:
-
好处:提高了程序的扩展性
-
定义方法的时候,使用父类型作为参数,该方法就可以接收父类的任意子类
-
-
弊端:不能使用子类独有的功能
多态中的转型:
-
向上转型
-
从子到父 父亲引用指向子类对象
-
-
向下转型
-
从父到子 父类类型转为子类类型(强转)
-
构造方法
构建、创造对象的时候,所调用的方法
格式:
-
方法名和类名相同,大小写也要一致
-
没有返回值类型,连void也没有
-
没有具体的返回值(不能有return)
作用:
用于给对象的数据(属性)进行初始化
注意事项:
-
如果没有定义构造方法,系统将给出一个默认的无参构造方法
-
如果定义了构造方法,系统将不再提供默认的构造方法
-
如果定义了带参数的构造方法,还要使用无参构造方法,就必须再写一个无参构造方法(重载)
-
推荐把无参和带参构造方法都写上