带你了解Java面向对象的基础,类,变量,方法

发布时间:2020-10-29 20:50:28 作者:Leah
来源:亿速云 阅读:107

今天就跟大家聊聊有关带你了解Java面向对象的基础,类,变量,方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

一、面向对象的4个基本特征

抽象性、封装性、继承性和多态性。

抽象性分为过程抽象和数据抽象。

封装性

封装将数据以及加在这些数据上的操作组织在一起,成为有独立意义的构件。外部无法直接访问封装的数据,从而保证了这些数据的正确性。
如果外部需要访问类里面的数据,就必须通过接口。接口规定了可对一个特定的对象发出哪些请求。

继承性

继承是一种联结的层次模型,并允许和鼓励类的重用,它提供给了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类)。

多态性

多态是指允许不同类的对象对同一消息做出响应。

二、类

类的声明

[类修饰符] class 类名 [extends 父类名] [implements 接口名列表]

注意

在定义类时,只是通知编译器需要准备多大的内存空间,并没有为它分配内存空间。只有用类创建了对象后,才会真正的占用内存空间。

Java规定:如果成员变量没有被显示赋初值,系统将自动为它们赋值。

三、变量

变量类型定义
成员变量定义在类里面,和方法处于同一层次
局部变量定义在方法里面

1.成员变量

默认情况下,成员变量是实例变量,在外部需要对象才能操作;如果用static修饰,就成为静态成员,也称为类变量,可以直接操作。如果前面加上关键字final ,它就是一个常量。

根据访问权限来区分成员变量 或方法

 publicprotected默认private
本类内部
同一包中的子类×
同一包中非子类×
不同包中的子类继承访问××
不同包中非子类×××

根据是否是静态来区分

特点
实例成员变量1.如果所属的对象没有被创建,实例成员变量就不存在;2.在类的外部使用它,通过“对象名.变量名”来访问;3.在类的内部,实例成员方法也可以直接访问实例成员变量;4.不同对象拥有不同的实例成员变量,互不影响
静态成员变量1.被类的所有对象所共享,被称为类变量;2.它不属于某个具体对象,也不是保存在某个对象的内存区域中,而是保存在类的公共存储单元。在类的对象被创建之前使用;3.可以通过对象名.变量名或者类名.变量名访问;4.它是一个公共变量,无论哪个对象改变了它的值,对其他所有该类对象都有效

2.局部变量和成员变量的区别

*局部变量必须先定义后使用。

局部变量没有访问权限修饰符,不能用public、private、和protected来修饰。这是因为它只能在定义它的方法内部使用
局部变量不能用static修饰,没有“静态局部变量”,这是Java和C/C++的区别
系统不会自动问局部变量赋初值,但对于成员变量,系统会自动赋初值。基本类型为0,复合类型的值为null
局部变量的作用域仅限于定义它的方法,在方法外部无法访问它。成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它。如果访问权限允许,还可以在类的外部使用它
局部变量的生存周期与方法的执行期相同。当方法执行到定义局部变量的语句时,局部变量被创建;执行到它所在的作用于的最后一条语句时,局部变量被销毁。类的成员变量,如果是实例成员变量,它和对象的生存期相同;静态成员变量的生存期是整个程序运行期
在同一个方法中,不允许有同名的局部变量;在不同的方法中,可以有同名的局部变量,互不干涉

局部变量可以与成员变量同名,且在使用时,局部变量有更高的优先级

四、方法

方法类型
实例方法必须在类实例化后通过对象来调用
静态方法(类方法)可以在类实例化之前就使用

1.方法调用的形式

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();
 }
}

main()方法是一个静态方法,它由系统来调用,系统在调用它的时候,并没有创建一个test的对象,而callOther()和showMsg()方法都是实例方法,它们被调用时,都必须有对象的存在。所以必须在main()中先创建一个对象才能调用这两个方法。而callOther()本身就是实例方法,它在执行时,一定有对象存在的。基于这个前提,callOther()可以直接调用showMsg()方法。

**要注意实参和形参的区别。

2.构造方法

一般形式

 构造方法名([参数列表]){
 [this([参数列表]);] | [super([参数列表])];
 语句序列
 }
 *其中this是调用其他的构造方法,super是调用父类的构造方法,它们都必须放在其他语句的前面。

注意事项

构造方法名字必须和类名字完全相同
除了访问权修饰符之外,不能有其他任何修饰符,也就不能有返回值
尽管没有返回值,但不能用“void”修饰
构造方法不能用static和final来修饰。一般也不用private修饰,这会导致无法在外部创建对象
构造方法不能由对象显示调用。一般通过new关键字来调用,或者用this,super来调用
构造方法的参数列表可以为空,也可以有参数,根据参数的有无,可以将构造方法分为无参数的构造方法和带参数的构造方法
用户定义的类可以拥有多个构造方法,但要求参数列表不同
如果用户定义的类未提供任何构造方法时,系统会自动为其提供一个无参数的构造方法

构造方法的调用

构造方法的重载

Java允许定义带参数的构造方法,而且这种带参的构造方法还可以多个,前提是参数列表有区别,这种现象称为构造方法的重载。

如果程序员至少定义了一个构造方法,那么系统不会再提供不带参的构造方法。

3.静态方法(类方法)

一般形式

 [访问权限修饰符]static 返回值类型 方法名([参数列表]){
 语句序列
 }

与实例方法区别

4.静态代码块

一般形式

 static{
 语句序列
 }

注意事项

静态代码块只能定义在类里面,它独立于任何方法,不能定义在方法里面
静态代码块里面的变量都是局部变量,只在本块内有效
静态代码块会在类被加载时自动执行,而无论加载者是JVM还是其他类
如果静态代码块所在的类被创建了多个对象实例,只有第一个对象被创建时才执行静态代码块
一个类中允许定义多个静态代码块,执行顺序根据定义顺序进行
静态代码块只能访问类的静态成员,而不允许访问实例成员

五、其他补充

一、关于变量

二、关于方法

三、关于类

四、关于接口

看完上述内容,你们对带你了解Java面向对象的基础,类,变量,方法有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. 带你全面了解QinQ
  2. 九妹带你了解oracle

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java 面向对象 ava

上一篇:Chrome实现弹窗功能

下一篇:MyBatis中$和#各代表什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》