Java面向对象

本文详细介绍了Java的面向对象编程特性,包括封装、抽象、继承和多态的基本概念,以及类、对象、成员变量、构造方法、实例方法和类方法的使用。还探讨了方法重载和对象创建的过程。此外,提到了参数传值的不同类型,以及常量的声明和使用。文章深入浅出地阐述了Java编程的核心概念,帮助读者理解面向对象编程的原理和实践。
摘要由CSDN通过智能技术生成

基本概念

面向对象基本特性

  • 封装:将数据和对数据的操作封装在一起
  • 抽象:对封装后的集合根据其属性和行为将其抽象为一个新的概念(如类的概念,再由类去创建具体的对象)
  • 继承:子类可以使用父类的属性与方法,同时还能在父类基础上进行衍生
  • 多态:有两种意义的多态,一种是操作名称的多态,即有多个操作具有相同的名字,但这些操作所接收的消息类型必须不同。另一种多态是和继承有关的多态,是指同一个操作被不同类型对象调用时可能产生不同的行为。(有待进一步理解)
  • 写类的目的是为了描述一类事物共有的属性和功能

类与类体

在这里插入图片描述
类体具体包括成员变量和方法

应用程序基本结构

在这里插入图片描述

成员变量

  • 成员变量的类型可以是Java中的任何一种数据类型,包括基本类型:整型、浮点型、字符型、数组以及后面的对象及接口。
  • 成员变量在整个类内都有效,与它在类体中书写的先后位置无关
  • 在定义类的成员变量时可以同时赋予初值,表明类所创建的对象的初始状态。
  • 对成员变量的操作只能放在方法中,方法可以对成员变量进行操作形成算法
类变量和实例变量
  • 关键字static修饰的成员变量称作静态变量或类变量, 而没有使用static修饰的成员变量称作实例变量
  • 类变量与类相关联,即其与类中所有对象都相关联,对象之间类变量的改变是同步的
  • 类变量不仅可以通过某个对象访问也可以直接通过类名访问
  • 实例变量仅仅是和相应的对象关联的变量,改变其中一个对象的实例变量不会影响其它对象的这个实例变量
  • 实例变量必须通过对象访问

方法

  • 方法的定义
    在这里插入图片描述
  • 最基本的方法声明包括方法名和方法的返回类型;如果方法的类型是void类型,方法体中也可以不书写任何语句
  • 方法体的内容包括变量的定义和合法的Java语句
  • 在方法体中声明的变量以及方法的参数称作局部变量,局部变量仅仅在该方法内有效
  • 方法的参数在整个方法内有效,方法内定义的局部变量从它定义的位置之后开始有效
构造方法
  • 类创建对象时需使用构造方法,以便给类所创建的对象一个合理的初始状态。
  • 构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,并且不返回任何数据类型,即它是void型,但void必须省略不写
  • Java允许一个类中有若干个构造方法,但这些构造方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。
  • 如果用户在一个定义类中未定义构造方法,系统将为它定义一个缺省的空构造方法。如果用户自己定义构造方法,系统就不再提供默认的
  • 构造方法只能在创建对象时用new命令调用
  • 对象不可以调用构造方法,构造方法是专门用来创建对象的
实例方法和类方法
  • 除构造方法外,其他的方法可分为实例方法或类方法
  • 方法声明中用关键字static修饰的称作类方法或静态方法,不用static修饰的称作实例方法
  • 一个类中的方法可以互相调用;实例方法可以调用该类中实例方法或类方法
  • 类方法只能调用该类的类方法,不能调用实例方法
  • 实例方法可以操作成员变量,无论是实例变量或类变量
  • 类方法只能操作类变量不能操作实例变量,也就是说类方法中不能有操作实例变量的语句
  • 实例方法必须通过对象来调用
  • 类方法可以通过类名调用
  • 无论类方法或实例方法,当被调用执行时,方法中的局部变量才被分配内存空间,方法调用完毕,局部变量即刻释放所占的内存。
方法重载
  • 方法重载是指一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。方法的返回类型和参数的名字不参与比较。也就是说,如果两个方法的名字相同,即使类型不同,也必须保证参数不同
  • 方法重载是多态性的一种
  • 功能多态性(又称为静态多态性),是指可以向功能传递不同的消息,以便让对象根据相应的消息来产生一定的行为。对象的功能通过类中的方法来体现,那么功能的多态性就是方法的重载

对象

  • Circle circle; 表示创建一个空的对象,还没有为其分配空间
  • circle=new Circle(); 使用new运算符和类的构造方法为声明的对象分配成员变量,如果类中没有构造方法,系统会调用默认的构造方法
  • Circle circle=new Circle(); 可以合在一起写
  • 匿名对象定义:new Circle();
  • 通过使用运算符“.”,对象可以实现对自己的变量访问 和方法的调用
    在这里插入图片描述
    在这里插入图片描述

常量

  • final int MAX=100;final修饰的成员变量必须要初始化
  • 对于final修饰的成员变量,对象可以操作使用,但不能做更改操作

参数传值

  • 当方法被调用时,如果方法有参数,即参数变量必须有具体的值
  • 如果向方法的int型参数x传递一个int值,那么参数x得到的值是传递值的拷贝
  • 方法如果改变参数的值,不会影响向参数“传值”的变量的值。
(1)基本数据类型参数的传值
  • 对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别
(2)引用类型参数的传值
  • 当参数是引用类型时,“传值”传递的是变量的引用而不是变量所引用的实体

  • 如果改变参数变量所引用的实体,就会导致原变量的实体发生同样的变化,因为,两个引用型变量如果具有同样的引用,就会用同样的实体。但是,改变参数的引用不会影响向其传值的变量的引用

  • 类中不同类型代码区加载次序(可以用输出次序理解):
    静态代码区(声明只有static)>一般代码区(没有声明)>方法区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值