Minecraft(我的世界)中文论坛

标题: JAVA语言零基础学习 第九章——面对对象初步

作者: 简单    时间: 2013-7-12 11:26
标题: JAVA语言零基础学习 第九章——面对对象初步
本帖最后由 海螺螺 于 2020-1-22 21:04 编辑

索引贴:http://www.mcbbs.net/thread-138969-1-1.html
本章内容导读
第一节 类
其实前面的代码中我们都有看到过类,但我们并没有具体学习如何定义一个类。
class是类的关键字格式如下
  1. 修饰符 class 类名 {
  2. 代码块
  3. }
复制代码
在代码块里,就是我们定义这个类的属性和方法的地方。

第二节 构造方法与方法
我开始学习这个的时候就被弄糊了。。。这是两个东西?
我们来看一看下面两段代码
  1. public class book {
  2.         String bname;
  3.         int bid;
  4.         int bprice;
  5.         
  6.         
  7.         public void sc(){
  8.          System.out.println("书名:"+bname+",id:"+bid+",价格:"+bprice+"金币");
  9.          
  10.         }
  11.         public static void main(String[] args){
  12.         book book1=new book();
  13.         book1.bname="《成为一名优秀的up主》";
  14.         book1.bid=9527;
  15.         book1.bprice=100;
  16.         book1.sc();
  17.         book book2=new book();
  18.         book2.bname="《制作mod的前置技能——java基础》";
  19.         book2.bid=3721;
  20.         book2.bprice=0;
  21.         book2.sc();
  22.                
  23.                         
  24.         }
  25. }
复制代码
  1. public class book {
  2.         String bname;
  3.         int bid;
  4.         int bprice;
  5.         
  6.         
  7.         public void sc(){
  8.          System.out.println("书名:"+bname+",id:"+bid+",价格:"+bprice+"金币");
  9.          
  10.         }
  11.         public book(String name,int id,int price)
  12.         {
  13.                 bname=name;
  14.                 bid=id;
  15.                 bprice=price;
  16.         }
  17.         
  18.         public static void main(String[] args){
  19.         book book1=new book("《成为一名优秀的up主》",9527,100);
  20.         book1.sc();
  21.         book book2=new book("《制作mod的前置技能——java基础》",3721,0);
  22.         book2.sc();
  23.                
  24.                         
  25.         }
  26. }
复制代码
输出结果:

书名:《成为一名优秀的up主》,id:9527,价格:100金币
书名:《制作mod的前置技能——java基础》,id:3721,价格:0金币
两个程序的输出结果相同。

上面两种都调用的构造方法,但有所不同。在一中,我们并没有定义一个有参数的构造方法,所以使用
  1. 类名 变量名=new 类名()
复制代码
来构造实例,对变量赋值。在第二个程序中,我们定义了一个带有参数的构造方法,所以我们直接调用我们定义的构造方法来进行构造实例与赋值。那么讲了这么多,什么是构造方法?java提供给类的变量赋值初始化的一个方法。
那么,方法又是什么呢?
方法是实现类的行为的,前面也举过例子。
关于构造方法和方法,我的理解是,构造方法是方法的一种,但是是最特殊的一种。(如有理解错误请大神指出)
我们来看看构造方法和方法各自的定义格式
构造方法
  1. 构造方法修饰符 方法名(参数列表)
  2. {
  3. }
复制代码
方法
  1. 修饰符 返回值 方法名(参数列表)
  2. {
  3. }
复制代码
不同点在哪里?构造方法不能被static、final、synchronized、abstract和native修饰。构造方法无需定义返回值。
最后要注意的一点是,构造方法的名称必须与类名相同,一个类可以有多个构造方法。

第三节 方法和变量的调用
我们要明白的一点是,除了用静态修饰符(static)修饰的变量、方法以外,这些东西都是不能直接调用的,我们需要用构造方法创造实例后才能对变量进行初始化或者调用方法。具体格式见上一节。

第四节 this关键字
前面我们讲过全局变量和局部变量,如果全局变量和局部变量的名称一样呢?这个时候,全局变量会被隐藏,不能使用,而在java中,我们可以通过this来对全局变量进行调用。
格式
  1. this.变量名
复制代码


第五节 包
首先,我们知道什么是包。
在java程序中,我们会编写很多很多的类,也就会编译出很多的class文件,我们可以利用包来管理这些文件。
定义包
格式
  1. package 包名
复制代码
我们也可以创建多层次包
  1. package 包名1.包名2.包名3
复制代码
导入包
格式
  1. import 包名1.包名2.····.类名1*
复制代码
类名可以直接用*号,表示导入所有类。
第六节 类的继承
继承是java的一个重要特点,在java的中,常会由一个已经定义的类派生出另外一个类,这就叫做继承,利用继承,我们可以创建一个公共类,这个类具有多个项目的共同属性,然后在然其他类继承其公共类,在添加上自己的特有属性,这是十分便捷的特性。
格式
  1. 修饰符 class 类名 extends 父类名
  2. {
  3. }
复制代码


在通常情况下,我们把子类称为父类的直接子类,把父类成为子类的直接超类。
在java中,一个类只能有一个父类。
假如有AB两类,A是B的子类。C类是A类的引用,那么C可以指向A的方法和变量,也可以指向B的方法和变量。
第七节 对父类进行访问

关键字:super
调用父类的构造方法
  1. super.()
复制代码
调用父类的变量和方法
  1. super.方法名\变量名
复制代码
我们需要注意的是,在子类不使用super时,系统会自动调用父类中默认的构造方法。
修饰符(更多(待编辑))
默认修饰符:没有指定修饰符,则用此,这是变量与方法只能在自己的类及该类同一个包下的类中访问。
public:公共修饰符,若将变量和方法定义为public,那么变量所在的类及其子类都是同一个包中的类,不同包中的类都可以访问变量和方法。
protected:保护修饰符,只能在自己的类和子类中被访问。
private:私有修饰符,自能在自己的类中被访问。
final:被修饰的变量在程序的整个执行过程中最多赋值一次,常被用来定义常量。
static:静态修饰符,被此修饰符修饰的变量方法可以直接调用,不需要用new关键字创建实例。最后还要说明一下
实际上,我们在使用Ec的过程中,包和类的创建等等,Ec都会给你自动完成。

完。。。。基础篇到此结束。。。扩展篇敬请期待。



作者: 风障    时间: 2013-7-12 11:34
看着都迷糊- -
作者: zkhzkh138    时间: 2013-8-1 15:32
好哈哈哈哈很尴尬公共共和国共和国
作者: cbs523770839    时间: 2013-8-6 17:34
先回复一个,明天看

作者: wqrmcbbs    时间: 2013-8-12 15:52
顶顶顶顶!!
作者: 54sean    时间: 2013-8-21 19:44
学习学习学习学习
作者: 饕餮魍魉枭蹀躞    时间: 2013-8-27 00:15
不错,挺易懂
作者: alan08    时间: 2013-9-1 10:57
hhuioiaSDUSIAOHDUSIAOHDUISAOHDUSAIO
作者: lkkhyl    时间: 2013-9-15 17:24
输出结果是多少?
作者: teacaddy    时间: 2013-9-18 16:15
期待!!!!!!!!!!!!!!!!!!!!!!!
作者: qidianshiling    时间: 2013-9-21 09:24
真不错{:10_492:}
作者: 银色十字梦    时间: 2013-9-21 09:36
我是java白痴,路过
作者: FBH    时间: 2013-10-2 21:46
看看看看看啊看看啊看
作者: qihuansheji    时间: 2013-10-4 18:32
      vvvvvvvvvvvvvvvvvvvvvvvvvvvv
作者: 1806590850    时间: 2013-10-5 16:41
=w={:10_493:}看不懂呀
作者: yemiry    时间: 2013-10-5 17:29
构造方法的名称必须与类名相同,一个类可以有多个构造方法

这个不是会有矛盾,有多个相同名称的方法
作者: 简单    时间: 2013-10-8 22:37
yemiry 发表于 2013-10-5 17:29
这个不是会有矛盾,有多个相同名称的方法

不会,参数不同
作者: halfcigarette    时间: 2013-10-12 14:46
回帖是美德。。。
作者: zhuti0716    时间: 2013-10-24 01:11
支持楼主 赞一个 其实我刚学到类这部分= =
作者: 拉姆拉姆    时间: 2013-10-25 17:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: xiashangyu    时间: 2013-10-27 11:00
顶个  好东西呀
作者: qq3922382    时间: 2013-11-2 09:20
你这是刷回复呢= =
作者: 1123fff    时间: 2013-11-15 01:40
手机上mcbbs的时候死活回复不了

然后就不能看到这个教程··
现在PC登录来回帖看教程·
作者: tigerzhz    时间: 2013-11-30 16:03
这比C++容易多了。。可惜没C++灵活性好
作者: cyz886    时间: 2013-12-8 15:55
非常有帮助的帖子
作者: 丿Playboy    时间: 2013-12-8 19:45
最讨厌卖关子了。。。
作者: 384    时间: 2014-1-3 12:54
这个最牛逼了
作者: 603825083    时间: 2014-1-5 03:44
比较有用..............................
作者: win7fs    时间: 2014-1-7 22:22
不错,正想学java
作者: Cyanogen    时间: 2014-1-9 22:06
坑爹的还要回复,手机党伤不起啊
作者: 擦拭    时间: 2014-1-11 10:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: Catang    时间: 2014-1-18 12:49
LZ辛苦了~很棒的教程
作者: 华南。    时间: 2014-1-19 13:54
22222222222222222222222222333333333333333333333333333333333333333
作者: phpair    时间: 2014-1-20 10:34
{:10_512:}
作者: wansinhow    时间: 2014-1-21 13:37
看着都迷糊了
作者: tianlang    时间: 2014-1-22 13:49
{:10_518:}可以同时定义的语句为何要拆成一条一条
作者: 简单    时间: 2014-1-22 18:04
tianlang 发表于 2014-1-22 13:49
可以同时定义的语句为何要拆成一条一条

看情况吧,实际上有些时候是推荐拆成一条一条的,便于说明。
作者: lwbzyb    时间: 2014-1-22 19:24
太难了啊,我要好好学习!!!
作者: 迅雷    时间: 2014-1-25 11:56
再次看回复可见=-=
作者: xky1997xky    时间: 2014-1-29 17:43
看下结果
作者: syc123    时间: 2014-2-2 13:00
为什么一定要回帖才能看
作者: lkr291484473    时间: 2014-2-9 03:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: ◎◎◎◎◎◎    时间: 2014-2-12 17:49
支持!!
作者: 754042967    时间: 2014-2-16 11:05
我要看输出结果!!!
作者: zyj12    时间: 2014-2-23 18:33
认真学习- -
作者: adv    时间: 2014-2-27 19:49
输入验证码不容易啊
作者: heng2c23    时间: 2014-2-27 22:29
超棒棒棒棒汙2   1111111111
作者: Dragontrail    时间: 2014-2-28 07:40
连教程也弄回复可见了,坑爹
作者: 爱拍孤单-笔记本    时间: 2014-3-7 22:08
楼主的太帅了,虽然我看不懂
作者: VAnight    时间: 2014-3-11 11:54
一键收藏
作者: mcAK47    时间: 2014-3-14 20:36
感觉直接看第九章太快了
作者: qeluoshan0    时间: 2014-3-19 18:48
{:10_523:}
作者: yst    时间: 2014-3-21 21:50
不要告诉我又是人可以走,分留下
作者: qwe2298946728    时间: 2014-3-23 08:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 夏远林0403    时间: 2014-3-23 16:13
hehe挺好的 有帮助
作者: stool    时间: 2014-3-23 19:12
表示对于我这种学习中的新人 有困难= =
作者: 593088930    时间: 2014-3-23 23:13
回复看看结果如何
作者: 1759760728    时间: 2014-4-2 21:12
赞~\(≧▽≦)/~
作者: shaoyu    时间: 2014-4-8 19:48
XXXXXXXXXXXXXXXX
作者: jin330jin    时间: 2014-4-10 11:25
楼主你赢了 给你分
作者: mikuand    时间: 2014-4-11 18:43
感谢分享
作者: mikuand    时间: 2014-4-11 18:43
努力学习
作者: teqilra    时间: 2014-4-20 13:28
顶一个,帮了我大忙了
作者: 草泥马x    时间: 2014-4-20 16:19
好啊好啊~~~~~~~
作者: Ci_Dao    时间: 2014-4-20 17:05
有点看不懂
作者: jiangshi123    时间: 2014-4-27 12:01
支持!!!!!
作者: 930419221    时间: 2014-4-27 16:47
W我tmtmtmtm要看结果
作者: nzs234    时间: 2014-4-29 19:09
我要看QAQ
作者: 呵呵2    时间: 2014-4-30 12:10
楼主你真是太伟大了
作者: OJ123    时间: 2014-5-3 21:44
暂时学习中、还不清楚、但有助
作者: xw0y    时间: 2014-5-13 22:50
隐藏内容= =
作者: qjqqwerty    时间: 2014-5-15 17:29
自觉回复。。。
作者: shukui06    时间: 2014-5-15 18:53
鄙人正在学习java,多谢撸主
作者: mingtfarc    时间: 2014-5-20 06:30
输出结果是啥?
作者: wsliang    时间: 2014-6-2 20:32
答案      答案     答案啊
作者: Bryan33    时间: 2014-6-3 21:20
学个JAVA就一定要回复吗233
作者: MineSuper    时间: 2014-6-7 19:51
学JAVA编程中。。[redstone_wire3]
作者: 御坂美琴_wzh    时间: 2014-6-22 15:10
好顶赞      
作者: 893816641    时间: 2014-6-22 15:44
hhhhhhhhhh
作者: CrazyIvan    时间: 2014-6-24 13:01
感谢楼主~
作者: food211    时间: 2014-6-24 16:20
毫无程序基础也能学吗
作者: 简单    时间: 2014-6-24 17:51
food211 发表于 2014-6-24 16:20
毫无程序基础也能学吗

这教程就是基础。。
作者: -[A_pple]-    时间: 2014-6-26 14:24
这个教程对我效果拔群啊=_+
作者: 84491135    时间: 2014-6-29 12:38
回帖 看内容0,0
作者: 43999077    时间: 2014-6-29 15:47
楼主好帅,希望继续更新教程帖!
作者: Knkiss    时间: 2014-6-29 23:35
新手还是看结果吧

作者: Knkiss    时间: 2014-6-29 23:35
新手还是看结果吧

作者: 1757067887    时间: 2014-7-2 19:20
不错的作品!!!!!!!!!!!!!!
作者: tcfx711    时间: 2014-7-2 21:07
                         ha
作者: 2056906166    时间: 2014-7-3 06:59
额。。。。额。。。额
作者: zdy000608    时间: 2014-7-5 19:33
非常好 虽然我学起来有点蒙 但很好了
作者: algerlin    时间: 2014-7-17 11:17
我又来了,看结果的
作者: weiwei1740    时间: 2014-7-19 20:21
学习了!!!!!!
作者: laxlax    时间: 2014-7-24 16:26
=。=好想知道答案
作者: zzymax    时间: 2014-7-25 17:44
很好很好啊啊啊啊啊啊啊。
作者: xiweihai    时间: 2014-7-30 18:28
顶顶顶

作者: wang960909    时间: 2014-7-30 23:03
给我看,真是的,{:10_510:}
作者: svd36kkla2    时间: 2014-8-3 15:34
这是逼我回复的节奏么
作者: svd36kkla2    时间: 2014-8-3 15:35
这是逼我回复的节奏么
作者: 修改器很好玩    时间: 2014-8-3 15:54
作为java学者当然要恢复