thinking in 读书笔记6

复用类
 1.java中代码复用两种方法:a。在新的类里直接创建旧的类的对象,称为合成(compostion),b。创建一个新的,与原来类属于同一类,全盘接受了旧类的形式,在没有对它作修改的前提下往里面添加了新的代码,称为继承(inheritance)。
 2.初始化reference的三个时间:a。在定义对象的时候,这样在构造函数完成之前,它已经完成初始化了。b。在这个类的构造 函数中。 c。在即将使用对象的时候,这被称为lazy initialization,懒加载,可以降低程序的开销。
 3.在每个类中都可以加入一个main方法函数,而不需管类是否是public的,这样可以在类的main函数中进行单元测试。java会调用你在命令行下给出的那个类的main方法。
 4.继承方面一条通用准则:把数据都设成private ,把方法都设为public,当然碰到特殊情况要调整。
 5.在子类中访问基类的方法,可以用super关键字。super.method();
 6.java会让派生类的构造函数自动的调用基类的构造函数。构造行为是从基类向外发展的,也即现调用高层基类的构造函数,然后从上往下调用构造函数。如果你要调用的基类构造函数是带参数的,你必须首先在你的子类的构造函数中用super关键字以及合适的参数明确的调用基类的构造函数。对派生类构造函数而言,调用基类构造函数应该是它做的第一件事情。编译器会强制在派生 类的构造函数的最前面调用基类的构造函数。例如:
     class Plate{
 Plate(int i){
    System.out.pritln("Plate Constructor");
 }
     }

     class DinnerPlate extends Plate{
 DinnerPlate(int i){
   super(i);  // invoke base class's construct
   System.out.println("DinnerPlate Constructor");
 }
     }
7.确保进行妥善的清理。在需要进行清理的情况下,尽量自己写清理的方法不要调用finalize()方法。清理的顺序和初始化创建的顺序应该是相反的。
8.一般说来,合成用于新类要使用旧类的功能而不是其接口的场合,也即把对象嵌入进出,用它来实现新类的功能,但用户看到的是新类的接口而不是嵌入进出的对象的接口。继承是要对已有的类做一番改造,以获得一个特殊的版本。简而言之,就是从一个抽象的类改造成满足某种特殊要求的具体类。继承要表达的是一种“是is-a”的关系,而合成表达的是“有has-a”的关系。
9.隐藏实现最好的做法是把数据成员设置为private,你应该永远保留修改底层实现的权利。然后用protected权限的方法来控制继承 类的访问权限,用public方法控制外界类的访问权限。
10.派生类和基类的关系就是“派生类就是一种原有的基类”。基类有的方法派生来都有,送给基类的消息也可以送给派生类。upcasting是安全的,因为是把一个具体的类型转换为一个较为抽象的类型。downcasting会出现问题,从抽象类型转换为具体类型,会丢掉很多信息。
11.final关键字表示“这样东西不允许改动”。final数据表示此数据是常量。static final不允许改变的常量。final用于对象reference的时候表示这个reference是常量,初始化的时候,一旦将这个reference指向了某个对象,那么它再也不能连接到其他的对象了。但是这个对象本身是可以修改的,java没有提供将某个对象常量化的方法。
12.java能让你创建blank final数据。也就是说把数据申明为final的,但是没有给初始化的值。这种情况提供了更为灵活的方式。但是你必须进行初始化,再使用空白的final数据成员,编译器也会强迫你这么做。
13.java里允许参数申明中参数是final的,这样参数也变成final了,就是说你不能在方法里让参数reference指向另一个对象。
14.final方法的目的:a.给方法上锁,禁止派生类进行修改。final方法不能被覆写。b.效率原因。
15.final类不能被继承。
16.java中,类的代码会在他们第一次使用的时候装载。类的装载通常发生在第一次创建该类的对象的时候,但是在访问类的static数据和方法的时候也会被装载。static数据只会初始化一次。
17.继承情况下的初始化:首先static void main()方法会装载经过编译的class,然后装载基类,一直到根基类。然后执行根基类 的static初始化,然后是派生类的static初始化,以此类推。现在所有的类都装载完成,可以创建对象了。首先,对象里的primitive 数据被初始化为0,reference初始化为null,调用基类的构造函数,然后按照变量的字面顺序进行初始化。

基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型,个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值