(兔C残篇)阐述:面向对象的基本概念,回顾方法的定义,方法的命名规则,方法的调用

1. 什么是面向对象,认识基础概念
  • 面向过程思想

    依照步骤,逐一进行操作

  • 面向对象思想

    将问题分类,先解决哪一类,在解决哪一类。对分类进行单独思考。然后在对某个分类下的细节进行面向过程的思索

小结:
首先 要理解面向对象思想,我们可以对比面向过程去思考
其次 对于描述复杂的事务,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。

2. 回顾方法的定义
修饰符 返回值类型 方法名(...方法参数){
     //方法体
     return 返回值;
}
2.1 方法定义的示例
  • demo
//返回String类型的demo
public String sResult(){
     return "HelloWorld!";
}
//返回int类型的demo
public int iResult(int a, int b){
     return a > b ? a:b;
}
2.2 结束语句关键字的使用
  • break :跳出switch 语句,结束整个循环
  • controller:结束当前次循环
  • break:结束方法,返回一个结果
    这个小知识点,属于一个小细节,一定要掌握清楚他们之间的区别。要知道三个关键字分别使用在什么场景下,以及三个关键字之间的区别是什么。

另外在强调一个点,就是选择结构switch的default关键字的使用:
在选择结构中,不可将default关键字作为选择结构的第一个匹配条件,至于这一个小细节,我们首先需要明白,default相当于是一个默认值的匹配,也就是说当没有可以匹配到的case: 时,会匹配到default当中,如果放在选择结构的第一个匹配,那么将不会匹配到其余的case。

2.3 方法名的定义规则

方法名的定义要采用驼峰命名

见名知意

//关于驼峰命名法,我们要牢靠的记住,大驼峰用来给类的命名,其余的方法和属性命名都用小驼峰。

2.4 关于方法的参数列表

(参数类型 参数名)

一个方法可能会有多个参数

还可以定义可变参数,可变参数,定义完之后,后面不能在定义别的参数,也就是说,可变参数要放在参数列表的最后一个进行定义。一个参数列表中,只能定义一个可变参数。

2.5 关于异常抛处的关键字使用

方法定义 抛处异常要使用 throws 关键字

之后跟上异常类型

throw 和 throws 要分清楚。

throw是使用在方法内部的,如果方法内部的逻辑中存在异常,而且没用使用 try 和 catch进行处理,那就需要将异常向上抛处。方法内部的异常抛出就使用throw关键字,内部抛出了异常,方法上也需要抛出异常,方法上的异常抛处就用throws 。

但是只单纯将异常抛出,而没有进行处理的话,那调用这个方法的时候需要处理异常,因为之间都是将异常进行抛出,没有进行处理,所以切记调用这个方法的使用还是会存在异常的,所以需要进行处理。

3. 回顾方法的调用
3.1 静态方法和非静态方法的调用
  • 静态方法的调用:

类名. 方法名

  • 非静态方法的调用:

调用非静态的方法,需要先实例化该方法的对象

因为被静态关键字修饰的东东是和类一起被加载的,所以可以直接通过类名进行调用。

非静态的方法可以调用静态方法,静态方法不能调用非静态的方法,这个问题也很明了,总之就是静态和类一起进行加载。

总结:

  • 方法的调用方式有两种,一种是使用类名直接调用,一种是实例化对象在进行调用。

  • 前者是针对静态方法的调用,后者是针对非静态的普通方法的调用。

  • 而静态方法之间可以直接进行调用,而非静态的方法之间也可以直接进行调用。

  • 但是今天方法不可以调用非静态方法,因为静态方法是和类一起被加载的,静态方法调用非静态的方法,非静态方法还没有被加载,所以不能进行调用。

3.2 形式参数和实际参数

形式参数只是形式上的参数,例如方法的参数列表中定义的参数就是形式参数,可以理解成,形式上的只是用于占位的。

实际参数是具有具体实际值的参数,例如调用方法时,给其传递的参数都是实际参数。

3.3 值传递和引用传递

关于这块内容我们看下面的codedemo进行理解。

  • 值传递 的 示例demo
public class Demo1{
     public static void main(String[] args){
          int a =1;
          System.out.println(a); //a 是1
          
          //采用静态的调用方法
          Demo1.change(a);  //类名.方法
          System.out.println(a); //此时的值是多少?
          //此时sout的语句输出的还是1,因为java是值传递的
          
     }
     
     public static void change(int a){
          a =10;
     }
}
  • 引用传递 的 示例demo
//对象是引用传递,但是本质是值传递
public class Demo2{
     public static void mian(String[] args){
          Person person = new Person();
          System.out.println(person.name); //name =null
          
          Demo2.change(person);
          System.out.println(person.name); //此时,name的值为 兔C
          
     }
     
     public static void change(Person person){
          //Person 是一个对象:指向的是 Person person = new Person();
          //这是一个具体的人,可以改变属性!
          person.name ="兔C";
     }
}

//一个类中只可以有一个 public class,但是可以有多个 class
//定义了 Person类,有一个属性:name
class Person{
     String name;
}



//这里隐含了两个新的概念,对象和内存,我们在下面会进行详细的讲述。

值传递和引用的传递的区别不好进行直观的概述,直观的描述不够精准,但是其中的区别也很容易看出,值传递就是将自己的值传递过去。例如第一个示例的a,把自己的值1传递给了调用方。

引用传递传递的是地址值,传递的接收方 地址也指向了 传递方,所以此时的值都为 兔C了。


时间这玩意真是不可控,在这一个简单的计量单位里,涵盖了太多的未知,从一月份的一篇博客,转眼已经到了2月9号了,博客的数量直观的表达了我近期的学习产量,简直恐怖如斯。
虽然产量减少,但是。。。没有停产,本来我打算梳理完Java SE 整个发出来的,但是后来发现知识点整篇表达出来过于混乱,和不易查阅,然后进行了拆分。经拆分之后,拟定了后续的计划,用最快的效率更新完 Java SE 部分 然后去生产一下算法。额…还有一个额外的,就是本人计划学习英语音标,如果方便,后期也可以分享给大家。
好了,以上是对于博文和近期学习的一个规划,下面我们进入正题,近期连载博文内容可能过于简短,但是内容一定直观易懂,帮助我们更快速,更深刻的理解 Java SE。每篇的简单,不是为了混文章的数量,而是为了保证方便查阅,仅此而已,不知不觉一大坨了,我把这一大坨的废话放在结尾,崇仰唯物主义精神,不要活的这么复杂,所以没用的东西滚去最底下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兔C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值