java的面向对象编程 方法 类 对象 构造器等

本文详细介绍了Java的面向对象编程特性,包括封装、继承和多态。通过实例展示了如何在Java中创建和调用静态与非静态方法,并探讨了Java中的值传递和引用传递概念。同时,解释了构造器的作用以及如何通过构造器初始化对象。最后,讨论了静态方法为何不能调用非静态方法的原因。
摘要由CSDN通过智能技术生成

像c语言面向过程编程 这是不太好的 面向对象编程嘛 就可以把事情分开了嘛 java的面向对象编程 也就是oop

当然了 实际编程到解决某个具体问题的方法 肯定也是一步步的来的嘛 也就是解决整个具体的问题的过程嘛 但是整个问题的剖析就很清楚了嘛

面向对象的三大特性 封装 继承 多态 会说明

java的基础 再次推荐那本书呀 java编程思想 有中文版

 以类的形式组织代码 以对象的形式封装数据

封装的意思就是把数据装起来嘛 然后对外提供服务

继承的意思就是说类之间可以通过继承方式来获得方法功能嘛

多态的意思是同一个方法可能对于不同的对象有不同实现

所以得先设计类 因为要设计大体的框架 才能去实例化出对象解决具体的问题 写具体的代码对吧


现在回顾下方法

回顾下java的方法 需要一个修饰符 返回值类型 方法的名字 然后是方法体对吧

 

然后一个程序是只有一个main方法的 因为main方法是用来启动程序的 我们平时做示例 所以一个类中都有一个main方法对吧

当然了 还有一个抛出异常 抛出异常是很重要的 基本上每个语言都有

比如python里面也有 try except 对吧 java就是 try catch finally 嘛 因为不能保证一个程序没有错 如果遇到程序之外的异常输出 程序不能断对吧 起码要正常运行才行


现在回顾下方法的调用

其实就是java里面的语法嘛 对吧 不知道怎么在java里面调用方法 不知道有几种方式对吧

java里面的方法分为两种嘛 静态方法和非静态方法

看那些jdk文档 很多就是静态方法对吧 通过static关键字 可以直接调用里面的方法来使用对吧

比如现在创建了一个类

这里面有两种方法 一个是静态方法 传进学生id 获取说话学生的名字 

第二个是非静态方法 传进学生id 获取吃东西学生的姓名 那么怎么调用呢 我们新建一个Demo2类

比如说我们想使用Student这个类 其实打出St IDEA就有提示了对吧

把Student类打全 然后. IDEA也会有提示 也可也看到我们可以直接使用的是静态方法对吧 这跟jdk文档中 比如那个Arrays工具类很像对吧 使用Arrays一些方法 也是静态方法 通过类名来直接调用对吧

  这样就输出了

那么我们怎么去使用非静态方法呢 那么就需要实例化对象了对吧

  

这就调用了非静态方法

那么为什么java需要这两种呢 凡事总有个原因对吧

java里面 在静态方法里面 是不能调用非静态方法的 两个非静态方法 两个静态方法 都是可以调用的 比如下面 

  

那么为什么会这样呢 因为静态方法是和类一起加载的 而非静态方法是类实例化后才存在的 


什么是值传递和引用传递呢

值传递就是只是值改变 引用传递是地址是一样的 所以一个变 另外一个也变'

Java 到底是值传递还是引用传递? - Intopass的回答 - 知乎 https://www.zhihu.com/question/31203609/answer/50992895 看看这个知乎吧

python的数组列表好像就是值传递 就是假设a是一个列表 然后b等于a 那么 a改变 b就改变了 JavaScript也是这样 如果要解决这个 就需要深度拷贝 和 浅拷贝


下面说一下类和对象的关系

怎么创建对象呢

构造器就是创建对象时必须要调用的 比如python里面的__init__初始化对吧 如果你实例化一个python类 就会触发这个方法


那这里就来说说构造器是什么

 

可以看到 这个类有个同名方法 但是hello就会报错 我们可以在这个方法里面做一些初始化操作

如果我们不写这个方法呢 问题来了 如果 新建一个类什么都不写 然后实例化它 那么在class文件 也就是编译后文件里 class里面是自动帮你写了一个这样的方法的

结论是:

1、一个类即使什么都不写 那么也会存在这个方法

2、构造方法没有返回值类型 就是void什么都没有

3、必须和类名相同

也就是无参构造器 拿来初始化一些信息

 那么实例化这个类 输出name 就会输出张三

那么有无参构造器 那么也会有有参构造器啦 一旦定义了有参构造 那么想使用无参构造 那么无参构造就必须得显示定义

那么什么是有参构造呢 还是跟python的__init__一样的 就是 new对象的时候 会实现传入参数 实例化对象

 在另一个类 调用这个类 可以看到 输出的是李四 而不是张三

构造器本意就是实例化时 初始化值 然后就是它的语法了

IDEA快捷键是 alt 加 insert

 就会出现提示了


下一节还是说java的面向对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值