3.21-3.26 毕设准备(点评vibe coding工具)+Day5继承访问权限修饰符包super构造方法执行顺序
ai编程工具体验总结为了加快毕设完成进程哥们斥巨资体验了很多ai代码工具单单是deepseek的api接口就消费了0.8个一百还开了个阿里云的百炼coding plan我甚至还开了个cursor pro一百四十元子。哦败家子来的。cursor的账户管理界面暴漏个人信息就不截图了其中阿里的coding plan和deepseek的api接口都是接在了trae上做一个我个人使用后的点评吧仅代表个人观点白月光deepseek首先是deepseek我的启蒙导师了最开始写前后端其实都是一个文件一个文件的问deepseek网页版他回一段我复制一段费心费力结果可能还不是很尽如人意因为一个中小型项目他的代码量就已经很大了网页版的对话他是有对话文本量限制的一个项目做一点内容就要换一次对话然后另一个对话又得重新和他交涉给他说明你的项目做到哪一部分了试过的应该知道不知道的那应该不是大学生了十分便秘。但是当时在大三课设不是很困难这个网页版尽管用起来便秘但是还能完成任务并且比个人编代码要高效就顺从了。然后哥们就大四了大四的课设那代码量不是一般的多呀又要搞前端又要搞后端虽然说没后端的sql优化和前端的技术栈但是单用deepseek的网页版对话是真完不成了交涉起来十分困难。而聪明的哥们注意到deepseek的网页版右边有个开放平台按钮点进去认真研究了研究往里面稍微充值了一下然后把api接口接到了trae上我靠哥们你知道吗就是那种久旱逢甘露便秘遇到开塞露的感觉。顺畅呀我就单纯的给他说了个任务让他给我做个前后端分离的项目调教很快并且他能通读项目没有网页版的便秘不到一周的时间哥们的大四课设就被deepseek大人解决了当然也少不了ai变成软件Trae的帮助。在这里十分感谢两位大人帮助我解决了我的大四课设致谢反思一下这里其实就有点vibe coding的雏形了。然后就到了现在哥们要做毕设了傻卵学校爱称我们计科本来学的就杂你毕设让我们好好做个前后端的东西就得了呗导师让我们做个沾点深度学习的东西那我真是去了哥们大学四年我们就学了机器学习深度学习的东西就稍微了解了了解甚至没有实操代码你让我们做沾点深度学习的东西好嘛我也是傻卵哥们也稍微研究过炒股亏了二百不服所以想用深度学习的东西来研究研究股票。嘿嘿嘿基于transformer的股价趋势预测嘿嘿嘿嘿嘿嘿。这个毕设其实很难从数据抓取到训练结束全流程自己搞。这时候哥们还是想起了deepseek大人但是deepseek大人和trae大人只能解决一些偏简单的任务吧碰到难回答的问题就不说话了。花了我八十块大洋只完成了一点简单训练算是完成一个雏形吧预测准确率56%左右由此可见白月光还是有能力的怎么说都是投资顾问起家的但是没有进步空间了或者说我没说明白任务。这时候我就想去进步一下刚刚好我马老师跟我说哎哥们那个阿里往百炼模型里面投了老多钱了你看看去。阿里云coding plan我没忍住就在3.24日晚上买了个coding plan。我是傻卵这个模型在trae上的表现让我感觉到是屎可能别人都是拿他去接openclaw养龙虾去了但是不妨碍我说他在trae上的表现就是一坨大的。首先就是他的兼容trae上并没有他的api接口你要去trae上下载他的插件Qwen啥来着然后修改配置文件才能使用单是接入百炼模型我就研究了半个多小时远不如白月光deepdeek好即插即用。然后就是编码能力好歹deepseek在trae上能够联网搜索找参考而这个百炼好像是没有联网能力权限也不是很够不像是一个vibe coding的感觉。在这里给百炼模型评价有点小屎。我就一臭大学生懂的不多但是单单在trae编码的体验来看是真的不舒服可能他在别的地方发挥很好如果看的人你真的有异议请私聊哥们我也想知道他在哪发挥好不然我coding plan白开了cursor最后有请真神登场无暇的思路极尽舒服的体验。伟大无需多言四种模式agentplandebugask方方面面给你心里疗愈。agentplan用最神的思路来解决你提出的一个简单问题哪怕你说的不明白都能懂你意思说他蛔虫不为过。debug哥们没用过ask问你问到怀疑人生让你彻底看清你自己和整个项目真的。除了贵哥们挑不出毛病仅仅一个pro就给哥们舒服飞了我不敢想ultra是个什么体验有大哥让我体验一下吗hhhhhh总结哥们真的不是崇洋媚外。哥们大二形政考九十多那个心脏拿出来不能说红的发亮那也好歹是没问题一心向党。但是外国货他是真带劲呀哥们如果你真的要去完成一个代码任务的话我真的推荐你用一下cursor它是有免费额度的你真的可以体验一下然后稍微冲一点给deepseek用用trae感受感受差距。外国货带劲嗯这些天主线其实是为开题报告做准备研究了研究vibe coding然后复盘前几天学的东西细节还真有。然后又用Java写了写排序算法冒泡插入快排。桶和堆排序还没研究这两天研究研究。下面就是今天学的东西了。继承继承主要内容在说继承之前再回顾一下Java的特点纯粹的面向对象的编程。嗯太绝对了今天下午学的静态代码块就不是deepseek大人说main方法基本数据类型也不是静态导入是啥这个也是数组也不是。面向对象编程的三大特性封装 继承 多态封装把类的属性和方法捆绑隐藏内部细节只向外暴漏必要接口用private实现封装。然后现在是继承继承用extends实现class Student{} class SmallStudent extends Student{}这是具体的继承方法上述代码就是SmallStudent继承StudentStudent是父类SmallStudent是子类继承允许子类继承父类的方法和属性达到代码复用的效果且继承的父类方法可重写。后面会和访问权限一块总结一下因为权限也会影响继承效果。继承的特性只可单继承即只能有一个父类。但是可以多重继承就是可以有爷爷。注意Java中的所有的类默继承Object类也就是所有对象都可以继承Object方法且所有定义的类都是引用类型返回的默认值都是null类和继承延申拓展构造方法类的实例化class Student{} public static void mainString[] args){ Student stu new Student(); }Student stu new Student();中的Student()就是系统默认的无参构造方法如果你不给类定义一个构造函数那么系统会默认给类一个无参构造方法但是如果你给类定义了一个构造方法不管是什么构造方法有参、无参还是满参那么这个系统默认的无参构造方法就不再分配了。eg:class Student{ int age; Student(int age){this.age age;} } public static void mainString[] args){ Student stu new Student(); }这个执行代码就会报错因为现在构造方法只有一个有参构造方法没有无参构造方法了。注1.当有继承的时候子类构造前都会先执行一遍父类的构造函数即生成一个父类对象至于父类对象名叫啥我也不知道今天太晚了我明天早晨起来复盘再搜2.这里还会和代码块有联动因为代码块优先级比构造函数高很绕建议多看访问权限修饰符有四种public private protected defaultpublic全局可见包括不同包的只要引入了就可以访问protected可以面向外面的包的子类不同包的子类也也可以访问这个protected修饰的属性和方法default只面向自己包内private只面向自己这个类嗯这样就好理解了这个也可以延申在继承上面子类在哪里定义thissuperthis指向当前调用方法的对象可以有效解决参数重名问题public void setName(String name){ this.name name; }super可以调用父类的可见方法同上面权限子类不能见的不可调用。super( ):子类调用父类的构造函数这个牵扯到构造器的执行顺序必须要明确的是//子类的构造方法首行必须调用父类的构造方法 //super() 调用必须是构造函数主体中的第一条语句不首行调用会报错 //子类调用方法首行会默认调用父类的无参构造方法 //如果父类没有无参构造方法需要明文指定要用哪个构造方法 //父类没有无参构造方法的情况是父类只有有参构造方法这时候如果调用无参构造会报错 // 无参构造方法是系统默认给的如果有构造方法默认的无参构造方法会消失代码块就是单纯的代码块声明在类中有成员代码块和静态代码块两种区别class Stu{ {System.out.println(--成员代码块---3);} static{System.out.println(--静态代码块---3);} }要注意的是1.成员代码块在每个成员函数实例化的时候都会调用 每创建一个对象都会执行一次并且优先级高于构造方法2.静态代码块只会执行一次 JVM加载这个类的时候会调用这个代码块且只会调用一次3.当首次使用一个类时包括创建对象、访问静态成员等JVM 会加载该类的.class文件并执行静态代码块和静态变量初始化按代码顺序。即先加载类的信息类的信息加载完了才会执行构造函数实例化生成对象。package com.easy.easy326; public class EasyJ { public static void main(String[] args) { new JAA(); } } class JA{ public JA(){ System.out.println(JA--父类构造方法----4);//成员代码块优先于构造函数 } public JA(int a){} //代码块 成员代码块 静态代码块 { //成员代码块 里面不能定义东西但是可以执行代码 //当实例化该类的对象时调用成员代码块 每创建一个对象都会执行一次 System.out.println(JA--成员代码块---3); } static{ new JAA();//删除这里再试试 //静态代码块 JVM加载这个类的时候会调用这个代码块 System.out.println(JA--的静态代码块---1); } } class JAA extends JA{ public JAA(){ System.out.println(JAA--子类的构造方法-------6); } { System.out.println(JAA--子类的成员代码块------5); } static{ System.out.println(JAA--子类静态代码块--2); } }问题1.删除 n ew JAA();//删除这里再试试 执行一次分析生成结果的顺序及原因2.尝试运行一下完整代码分析生成结果的顺序以及原因嗷嗷嗷k今天的东西整理完了我要去找我的cursor大人了。