疯狂JAVA 讲义---第五章:面对对象(上) 未完成

本文介绍了Java面向对象的基本概念,包括类、对象、属性、方法、构造器、继承、多态等核心内容,并详细讲解了方法的属性、参数传递机制、递归方法及封装的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章要点

1:定义类、属性和方法
2:创建并使用对象
3:对象和引用
4:方法必须属于类或对象
5:Java里方法的参数传递机制
6:递归方法
7:方法的重载
8:实现良好的封装
9:使用package和import
10:构造器的作用和构造重载
11:继承的特点和用法
12:重写父类方法
13:super关键字的用法
14:继承和多态
15:向上转型和强制类型转换
16:继承和组合的关系
17:使用组合来实现复用
18:构造器的初始化块的作用和区别
19:静态初始化块

      Java是面向对象的程序设计语言,Java语言提供了定义类、定义属性、方法等最基本的功能。类可被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量,它们将会引用到类的对象,对象由类负责创建。类用于描述客观世界里某一类对象的共同特征,而对象则是类的具体存在,Java程序使用类的构造器来创建该类的对象。
     Java也支持面向对象的三大特征:封装、继承和多态,Java提供了private、protected和public三个访问控制修饰符来实现良好的封装,提供了extends关键字来让子类继承父类,子类继承父类将可以继承到父类的属性和方法,如果访问控制允许,子类实例可以直接调用父类里定义的方法。继承是实现类复用的重要手段,除此之外,也可以通过组合关系来实现这种复用,从某种程度上来看,继承和组合具有相同功能。使用继承关系来实现复用的时候,则不具备这种灵活性。
      构造器用于对类实例记性初始化操作,构造器支持重载,如果多个重载的构造器里包含了相同的初始化代码,则可以把这些初始化代码放置在普通初始化块里完成,初始化块总在构造器执行之前被调用。除此之外,Java还提供了一种静态初始化块,静态初始化块用于初始化类,在类初始化阶段被执行。如果继承树里的某一个类需要被初始化时,系统将会同时初始化这颗继承树里的所有类。
    

5.1.3对象、引用和指针

如:Person p=new Person();
这行代码实际上产生了两个实体:一个是p变量,一个是Person对象。
类也是一种引用数据类型,因此程序中定义的Person类型的变量实际上是一个引用,它被存放在栈内存里,它指向实际的Person对象;而真正的Person对象则存放在堆内存中。如图显示了将Person对象赋给一个引用变量的示意图:



5.2.1方法的所属性

          实际上,方法确实是有传统的函数发展而来,但方法与传统的函数有着显著的不同:在结构化编程语言里,函数是一等公民,整个软件由一个一个的函数组成;在面向对象编程 语言里,类才是一等公民,整个系统由 一个一个的类组成。因此在Java语言里,方法不能独立存在,方法必须属于类或对象。
       因此,如果需要定义方法,则只能在类体内定义,不能独立定义一个方法。一旦将一个方法定义在某个类体内,如果这个方法使用了static修饰,则这个方法属于这个类的,否则这个方法属于这个类的对象。
       Java语言是静态的:一个类定义完成后,只要不再重新编译这个类文件,该类和该类的对象所拥有的方法是固定的,永远都不会改变。
        所有的方法都必须使用“类.方法”或“对象.方法”的形式调用。
       Java语言里的方法的所属性主要体现:
          ----->方法不能独立定义,方法只能在类体里定义。
          ----->从逻辑意义上来看,方法要么属于一个类,要么属于一个对象。
          ------>永远不能独立执行方法,执行方法必须使用类或对象为调用者。

5.2.2方法的参数传递机制

       如果声明方法时包含了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时实际传给形参的参数值也被称为实参。
       那么,Java的实参值是如何传入方法的呢?这是由Java方法的参数传递机制来控制的,Java里方法的参数传递方式只有一种:值传递。所谓值传递,就是将实际参数值的副本(复制品)传入方法内,而参数本身不会受到任何影响。
public class TestPrimittiveTransfer
{
        public static void swap(int a,int b)
        { 
                //下面三行代码实现a b变量的值
                //定义一个临时变量来保存a变量的值
                    int tmp=a;
                 //把b的值赋给a
                     a=b;
                   //把临时变量 tmp的值赋给a
                      b=tmp;
                   System.out.println("swap方法里,a的值是“+a+”:b的值是“+b);
          }
       public static void main(String[] args)
       {
               int a=6;
               int b=9;
               swap(a,b);    
                 System.out.println("交换结束后,实参a的值是“+a+”:实参b的值是“+b);
          }
}


运行结果:
swap方法里,a的值是9:b的值是6
交换结束后,实参a的值是6:实参b的值是9




5.2.4递归方法


      一个方法体内调用它自身,被称为方法的递归。方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。
      例如:已知有一个数列:f(0)=1,f(1)=4,f(n+2)=2*f(n+1)+f(n),其中n是大于0的整数,求f(10)的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值