1.6 Java之创建和调用对象(对象结构+重载+参数传递)

目录

 

面向对象思想

面向对象的三大特征

设计对象方法

类对象的内存结构

成员变量

局部变量

类的方法

类的访问机制

方法的封装

重载

重载练习

创建对象练习

匿名类对象

可变个数形参的方法

参数传递方式

参数传递练习


面向对象思想

面向对象的三大特征

  • 封装  (Encapsulation)
  • 继承  (Inheritance)
  • 多态  (Polymorphism)

设计对象方法

完成需求时:

先去找具有所需功能的对象来用。

如果该对象不存在,那么创建一个具有所需功能的对象。

这样简化开发并提高复用。
 


类对象的内存结构

 


成员变量

成员变量在堆空间

 

成员变量定义在类中,在整个类中都可以被访问。

成员变量分为类成员变量和实例成员变量,实例变量存在于对象

所在的堆内存中。

成员变量有默认初始化值。

成员变量的权限修饰符可以根据需要,选择任意一个
 


局部变量

局部变量只定义在局部范围内,如:方法内,代码块内等。

局部变量存在于栈内存中。

作用的范围结束,变量空间会自动释放。

局部变量没有默认初始化值,每次必须显式初始化

局部变量声明时不指定权限修饰符
 

 

 


类的方法

修饰符  返回值类型  方法名 ( 参数列表) {
       方法体语句;

}

 

当通过对象调用方法时,将方法的返回值返回给调用的当前对象

 

return其后不可放置语句


类的访问机制

 

在一个类中的访问机制:类中的方法可以直接访问类中的成员变

量。(例外:static方法访问非static,编译不通过。)

 

在不同类中的访问机制:先创建要访问类的对象,再用对象访问

类中定义的成员。

 



方法的封装

数组方法的封装

 

 

 封装方法的相同部分

 

 


重载

 

例子:printIn()方法

 

方法名同,参数列表同---》同一方法

参数列表不同,包括参数顺序,参数个数,参数类型

 


重载练习

 

与void show(int a,char b,double c){}构成重载的有:

  void show(int x,char y,double z){}   //no

  int show(int a,double c,char b){}   //yes

  void show(int a,double c,char b){}  //yes

  boolean show(int c,char b){}  //yes

  void show(double c){}  //yes

  double show(int x,char y,double z){}  //no

  void shows(){double c}  //no

 

 

参照上图,注释int类型方法后,则数据自动类型转换,改为调用double类型方

 


创建对象练习

1)类的创建和使用

 

2)

以上为两种写法,控制最后打印的半径+1

 


匿名类对象

 

我们也可以不定义对象的句柄,而直接调用这个对象的方法。这

样的对象叫做匿名对象。

如:new Person().shout();

 


可变个数形参的方法

 

//以可变个数形参来定义方法

 

public static void test(int a ,String…books);

 

 

可变个数形参方法包含零个参数,所以实际包含方法2,方法1,

但调用,时,若无参数,仍优先调用方法2,若无方法2的声明,

则调用可变个数形参

如上图,可变个数形参相当于数组,所以以上两方法为同一方法

 

如下图,可变个数形参的使用方法同数组,都有.length

 


参数传递方式

 

方法,必须有其所在类或对象调用才有意义。若方法含有参数:

 

形参:方法声明时的参数

实参:方法调用时实际传给形参的参数值
 

Java里方法的参数传递方式只有一种值传递。即将实际参数值

的副本(复制品)传入方法内,而参数本身不受影响。

 

实例:

 

注意栈的先进后出

 

方法的形参名为(int i,int j)

 

 

上图理解不够清晰,现在改变方法的形参名为int m, int n

(对程序无影响,只是为了便于理解),内存结构如下

 

 

 

 

 

值交换成功,内存分析如下

 

传递的是地址值,所以交换成功(叉号表示方法执行完毕,方法

的局部变量出栈)

 

回顾:数组的排序

 

并不能交换两数组元素,因为基本数据类型变量为值的复制,而

改用数组(引用数据类型),即地址值传递,才能真正交换元素

值,正确写法如下

 

参数传递练习

结果为15 0 20,分析如下

附录

注释:选中+ctrl+/   (单行注释掉)

      选中+Ctrl+shift+/  (多行注释掉)

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值