为了账号安全,请及时绑定邮箱和手机立即绑定

【寒假学Java】第二天收获:对继承和多态的了解,import和包的深入

标签:
Java
正文之前

每天有点收获才是好事不是?今天下雪,斗志受到了影响,所以好好反省,然后总结下今天干了些啥??? OK 下面进入正题:

正文

第一点:下载并且破解了JetBrains CLion 2017.3

这里不用多说,上图为证,另外大家可以参考这篇文章:

【Problem Solution】Mac 下载的压缩文件只有很多小文件,没有dmg + JetBrains IntelliJ IDEA破解--已解决

其中的方法不仅是对Java的IDLE有用,对于CLion也是一样的,这很神奇,一个破解的办法直接干翻全套软件我也是服气。没错,对于CLion,你直接按照IntelliJ IDEA的破解办法来。直接用一样的破解文件,用一样的配置文件语句(没错,我也纳闷,C++的编译器,居然最后添加一句javaagent?)

对了。我的破解参考这篇文章,要不是他说javaagent那个,我是真的没辙!!!

CLion 2016.2 Mac破解版 | 史蒂芬周的博客

另外就是,我今天发现了一个好办法,可以比较省心的把压缩的dmg镜像文件找回来。

HustWolf:JetBrains.CLion.2017.3.1.MacOSX.Incl.KeyMaker-DVT zhangzhaobo$ cp -a d274dje*/d-000* Jc/
HustWolf:JetBrains.CLion.2017.3.1.MacOSX.Incl.KeyMaker-DVT zhangzhaobo$ cd Jc/
HustWolf:Jc zhangzhaobo$ ls
d-000je.r00 d-000je.r07 d-000je.r14 d-000je.r21 d-000je.r28
d-000je.r01 d-000je.r08 d-000je.r15 d-000je.r22 d-000je.r29
d-000je.r02 d-000je.r09 d-000je.r16 d-000je.r23 d-000je.r30
d-000je.r03 d-000je.r10 d-000je.r17 d-000je.r24 d-000je.r31
d-000je.r04 d-000je.r11 d-000je.r18 d-000je.r25 d-000je.rar
d-000je.r05 d-000je.r12 d-000je.r19 d-000je.r26
d-000je.r06 d-000je.r13 d-000je.r20 d-000je.r27

没错,把所有的小压缩包解压后,直接在终端里面一个命令解决所有问题。简直神器!!!

我是淫荡的分割线!~

第二点:更懂得了继承与多态

继承的初始目的:

其实简单的说,继承也就是提取共性,然后把共有的特性集合作为父类,子类根据自身需求来继承。

多态的由来:

多态即动态绑定(后期绑定),在编写某些方法或者一些代码的时候,我们并不知道到底要执行哪个子类, 那么我们把父类放到那个原定的位置,然后在真正使用的时候把一个子类的实例放进去,这样的话就可以实现多态性的调用这一段代码,而不用考虑其到底是否兼容这个类型/实例

据我所知,C++的动态绑定好像跟Java很像啊,都是站位的时候父类顶上去,实际使用的时候上一个子类顶锅,but也许虚函数也是吧。我那儿没学好啊!

下面就着实的体现了多态之美!!!


class base{
    public void walk(){
        System.out.println("I am walking! I am base!");
    }
    public void run(){
        System.out.println("I am running, I am base!");
    }
}

class Son extends base{
    public void run(){
        System.out.println("I am happy running,I am Son");
    }
}

public class TestArray {
    public static void test(base X){
        X.run();
        X.walk();
    }
    public static void main(String[] args) {
    Son newson=new Son();

    test(newson);

    }
}

下面是结果:

Java是多么的聪明啊!!

我是淫荡的分割线!~

第三点:更懂得了import 和 package的用法

首先,import就是用来导入已经存在的类的。我本来是在Mac上的JetBrains IntelliJ IDEA解决了今天的一个练手的超小型项目的,然后我想试试在别的没有IDLE的环境该如何调试程序的时候。我该怎么导入我的已经存在的类?Class!因为我之前为了学习package 把所有的辅助的类都打包到了com.yywzzb.oop这个层级下面,导入的时候我当然是直接import :

import com.yywzzb.oop.MainMenu;
import com.yywzzb.oop.Price;
import com.yywzzb.oop.Customer;

那么如果我在树莓派上没有package?而且树莓派好像也不是很支持我打包的样子,所以直接所有的文件都在一个文件夹下。我思前先后了好久,一直想不到该怎么导入同一个文件夹下的类。直接import 名字么?但是这么测试的时候失败了。可恶!! 所幸,后来上网查,发现思路就错了。同一个文件夹下的所有的类默认都在PATH中,或者说当前的path就是工作目录,你的Class在这个文件夹下,不就一直处于path可以检测到的地方么。所以陷入思维怪圈了。还好,众多网络大佬能相隔几年,地处千里之外给我指点!!美滋滋!!

至于package,我真没感觉有啥很特别的。大概就是一个分层次的打包器???把你的文件不用自己一个个安排,直接用域名形式来决定层级,在编码初期就分门别类的摆好所有的Class文件,等待后面import,调用!看,这就是我的一个子文件的存储路劲:

/Users/zhangzhaobo/IdeaProjects/Test_of_Java/
out/production/颜雨薇的Shopping System/com/yywzzb/oop/Customer.class

重要的是后面那一截,看到/com/yywzzb/oop/Customer.class的时候想必你就明白了。看这么那么复杂的命名方式,真的只是用来好安排文件夹名字以及层次的,真的没有别的深意!

正文之后

搞完收工,睡觉了!明天早起肝Java

起码看完这些啊!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消