十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
今天就跟大家聊聊有关带你了解Java面向对象的基础,类,变量,方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
创新互联建站是一家网站设计制作、做网站,提供网页设计,网站设计,网站制作,建网站,按需设计网站,网站开发公司,从2013年成立是互联行业建设者,服务者。以提升客户品牌价值为核心业务,全程参与项目的网站策划设计制作,前端开发,后台程序制作以及后期项目运营并提出专业建议和思路。抽象性、封装性、继承性和多态性。
抽象性分为过程抽象和数据抽象。
封装将数据以及加在这些数据上的操作组织在一起,成为有独立意义的构件。外部无法直接访问封装的数据,从而保证了这些数据的正确性。
如果外部需要访问类里面的数据,就必须通过接口。接口规定了可对一个特定的对象发出哪些请求。
继承是一种联结的层次模型,并允许和鼓励类的重用,它提供给了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类)。
多态是指允许不同类的对象对同一消息做出响应。
[类修饰符] class 类名 [extends 父类名] [implements 接口名列表]
在定义类时,只是通知编译器需要准备多大的内存空间,并没有为它分配内存空间。只有用类创建了对象后,才会真正的占用内存空间。
Java规定:如果成员变量没有被显示赋初值,系统将自动为它们赋值。
变量类型 | 定义 |
---|---|
成员变量 | 定义在类里面,和方法处于同一层次 |
局部变量 | 定义在方法里面 |
默认情况下,成员变量是实例变量,在外部需要对象才能操作;如果用static修饰,就成为静态成员,也称为类变量,可以直接操作。如果前面加上关键字final ,它就是一个常量。
根据访问权限来区分成员变量 或方法
public | protected | 默认 | private | |
---|---|---|---|---|
本类内部 | √ | √ | √ | √ |
同一包中的子类 | √ | √ | √ | × |
同一包中非子类 | √ | √ | √ | × |
不同包中的子类 | √ | 继承访问 | × | × |
不同包中非子类 | √ | × | × | × |
根据是否是静态来区分
特点 | |
---|---|
实例成员变量 | 1.如果所属的对象没有被创建,实例成员变量就不存在;2.在类的外部使用它,通过“对象名.变量名”来访问;3.在类的内部,实例成员方法也可以直接访问实例成员变量;4.不同对象拥有不同的实例成员变量,互不影响 |
静态成员变量 | 1.被类的所有对象所共享,被称为类变量;2.它不属于某个具体对象,也不是保存在某个对象的内存区域中,而是保存在类的公共存储单元。在类的对象被创建之前使用;3.可以通过对象名.变量名或者类名.变量名访问;4.它是一个公共变量,无论哪个对象改变了它的值,对其他所有该类对象都有效 |
*局部变量必须先定义后使用。
局部变量没有访问权限修饰符,不能用public、private、和protected来修饰。这是因为它只能在定义它的方法内部使用 |
局部变量不能用static修饰,没有“静态局部变量”,这是Java和C/C++的区别 |
系统不会自动问局部变量赋初值,但对于成员变量,系统会自动赋初值。基本类型为0,复合类型的值为null |
局部变量的作用域仅限于定义它的方法,在方法外部无法访问它。成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它。如果访问权限允许,还可以在类的外部使用它 |
局部变量的生存周期与方法的执行期相同。当方法执行到定义局部变量的语句时,局部变量被创建;执行到它所在的作用于的最后一条语句时,局部变量被销毁。类的成员变量,如果是实例成员变量,它和对象的生存期相同;静态成员变量的生存期是整个程序运行期 |
在同一个方法中,不允许有同名的局部变量;在不同的方法中,可以有同名的局部变量,互不干涉 |
局部变量可以与成员变量同名,且在使用时,局部变量有更高的优先级 |
方法类型 | |
---|---|
实例方法 | 必须在类实例化后通过对象来调用 |
静态方法(类方法) | 可以在类实例化之前就使用 |
public class test{ public void showMsg(){ System.out.println("This is showMsg method."); } public void callOther(){ showMsg(); } public static void main(String args[ ]){ test ob = new test();// ?为什么不直接调用 ob.callOther(); } }