【Java面向对象】类的继承详解

Cadence Virtuoso IC617:从零构建传输门与反相器的Schematic设计实战 本文详细介绍了使用Cadence Virtuoso IC617进行传输门与反相器Schematic设计的完整流程,包括环境准备、原理图绘制、Symbol创建、仿真验证及实用技巧。通过分步指导和实战经验分享,帮助初学者快速掌握集成电路设计基础,提升EDA工具应用能力。 阅读详情

类继承,是面向对象的三大特征之一。继承的核心思想是代码的复用。

子类的成员变量

子类并不能继承父类中所有的成员:

  1. 静态变量和静态方法不能被继承。静态变量和静态方法都可以通过“子类名.父类静态成员”的形式成功调用。
  2. 所有的私有成员不能继承, 即private修饰的成员。
  3. 构造函数不能被继承。

继承中成员变量的特点:
a) 子类只能获取父类非私有成员
b) 子父类中成员变量的名字不一样直接获取父类的成员变量
c) 子父类中成员变量名字是一样的获取的是子类的成员变量

成员变量使用的就近原则:谁离我近我就用谁
a) 如果有局部变量就使用局部变量
b) 如果没有局部变量,有子类的成员变量就使用子类的成员变量
c) 如果没有局部变量和子类的成员变量,有父类的成员变量就使用父类的成员变量
d) 啥都没有,出错了!!!

/*
函数功能:
	“就近原则”的求证
*/
class Dad {
	String name = "Dad";
}
class Kid extends Dad {
	String name = "Kid";
	public void show() {
		String name = "Little";
		System.out.println(super.name); //指定用父类的成员变量:输出:建霖
		System.out.println(this.name); //指定用子类的成员变量;输出:四葱
		System.out.println(name); //就近原则;输出:五葱

	}
}
/*输出:
	Dad
	Kid
	Little
*/

子类的成员方法

继承中成员方法的特点:
- 子类中没有这个方法,调用父类的
- 子类中重写了这个方法,调用子类的

继承中构造方法的执行顺序:

  1. 创建子类对象,调用子类的构造方法;如果子类的构造方法的第一行代码如果没有调用父类的构造或者没有调用子类的其他构造,则默认调用父类无参构造;
  2. 我们可以在子类的构造方法中使用“super()”方法,主动调用父类的构造方法;使用“this()”方法调用子类的构造方法;
  3. 在执行上,肯定是先执行父类中的构造方法,再执行子类中的构造方法;
// 程序功能:求证构造方法的执行顺序
class Dad {
	public Dad() {
		System.out.println("我是父类无参构造");
	}
	public Dad(int num) {
		System.out.println("我是父类有参构造");
	}
}

class Kid extends Dad {
	public Kid() {
		// super(); //编译器默认调用,当开发者没有使用以下两种主动调用方式时生效
		// super(1); //调用父类的有参构造方法

		this(1);// 不会再调用父类的无参构造了,而调用本类的有参构造
		System.out.println("我是子类无参构造");
	}
	public Kid(int num) {
		// 会默认调用父类无参构造,即执行super();
		System.out.println("我是子类有参构造");
	}
}

public class Main {
	public static void main(String[] args) {
		Dad d = new Dad(); //输出:我是父类无参构造
		System.out.println("----分割线-----");
		Kid k = new Kid(); //输出:我是父类午餐构造 我是子类无参构造
	}
}

/*输出:
	我是父类无参构造
	----分割线-----
	我是父类无参构造
	我是子类有参构造
	我是子类无参构造
*/

重写(Override)

  重写,又叫覆盖,是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。_即外壳不变,核心重写!_也就是说子类能够根据需要实现父类的方法。
  注意:重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。

重写方法的法则:

  1. 父类的成员方法只能被它的子类重写。
  2. 声明为final的方法不能被重写。声明为private的方法不能被重写
  3. 声明为static的方法不能被重写,但是能够被再次声明。
  4. 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
  5. 子类和父类不同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。
  6. 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
  7. 构造方法不能被重写。

子类的对父类方法的重写法则:

  1. 参数列表完全相同;
  2. 返回类型完全相同;
  3. 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。(权限由高到低:public、package、protected、private)

多态

多态发生的三大条件:

  1. 子父类的继承关系
  2. 方法的重写
  3. 父类引用指向子类对象;动态绑定:运行期间(区分编译期间)调用的方法,是根据其具体的类型

什么是“父类引用指向子类对象”:

//程序功能:理解父类引用指向子类对象
public class PoymorphicDemo {
	public static void main(String[] args) {
		//父类引用 Animal a
		//指向	 =
		//子类对象 new Cat()
		Animal a = new Cat(); //父类引用指向子类对象
		a.eat(); //先调用new后面的类中方法,如果没有再去父类中找。输出:猫吃鱼
	}
}

class Animal {
	public void eat() {
		System.out.println("吃东西");
	}
}

class Cat extends Animal {
	public void eat() {
		System.out.println("猫吃鱼");
	}
}

多态的成员特点:

  1. 成员变量:编译时看的是等号的左边,运行时看的左边
    即编译时的变量在左边的类中寻找,找不到则编译错误,反之编译通过;
    运行时的变量在左边的类中寻找;
  2. 成员方法:编译时看的是等号的左边,运行时看右边
    编译时看左边的类是否有该方法,找不到该方法即编译错误;运行时看右边的类有没有该方法,有则调用,没有则调用父类的方法;
  3. 静态方法: 编译时看的是等号的左边,运行时看的也是左边

**总结:**编译时看的都是左边,运行时成员方法看的是右边,其他(成员变量和静态的方法)看的都是左边

多态成员变量的特点:

//程序功能:验证多态成员变量的特点
class Dad {
	int num = 20;
	
	public void method() {
		System.out.println("我是父类方法");
	}
	public static void function() {
		System.out.println("我是父类静态方法");
	}
}

class Kid extends Dad {
	int num = 10;
	
	public void method() {
		System.out.println("我是子类方法");
	}
	public static void function() {
		System.out.println("我是子类静态方法");
	}
}

public class Main {
	public static void main(String[] args) {
		Dad d = new Kid(); //父类引用指向子类对象

		System.out.println(d.num); //成员变量:编译时看的是等号的左边,运行时看的左边
		d.method(); //成员方法:编译时看的是等号的左边,运行时看右边
		d.function();//静态方法:使用变量去调用静态方法,其实相当于用变量类型的类名去调用
	}
}
/* 输出:
	20:成员变量,运行时看左边,左边是Dad类,就使用Dad类中的成员变量
	我是子类方法:成员方法,运行时看右边,右边是Kid类,就使用Kid类中的成员方法
	我是父类静态方法:静态方法,运行时看左边,左边是Dad类,就使用Dad类中的静态方法
*/

多态中的类型转换

多态中的向上转型和向下转型:

  • 基本数据类型的转换

自动类型转换(由小到大):byte short char — int — long — float — double
强制类型转换(由大到小)

  • 引用类型之间的转换

向上转型:由小到大(子类型转换成父类型)
向下转型:由大到小(父类型转换为子类型)

类型转换实例:

class Animal {
	public void eat() {
		System.out.println("吃东西");
	}
}

class Dog extends Animal {
	public void eat() {
		System.out.println("狗在吃东西");
	}
	public void swim() {
		System.out.println("狗在浮水");
	}
}

public class Main {
	public static void main(String[] args) {
		Animal a = new Dog(); //向上转型:子类对象转换为父类对象
		a.eat(); //多态,对于方法,运行时看右边,右边是Dog类,故调用Dog类中的方法;输出“狗在吃东西”
		
		//如果我想要实现a对象使用Dog类的swim方法,应该怎么实现?
		Dog d = (Dog) a;//向下转型,本身是什么类型,才能转换成什么类型
		d.swim(); //输出:狗在浮水
	}
}

多态的高可拓展形实例:

// 程序功能:多态的应用;对一个类功能的拓展;

/*===============================起始 分割线================================*/
//问题:每当我们需要生产一种手机,就需要修改添加代码,这样很麻烦
class MiFactory {
	/*public void createPhone(MiNote mi) {
		mi.call();
	}
	
	public void createPhone(RedMi mi) {
		mi.call();
	}*/
	
	public void createPhone(Phone p) { //好处:我们只需要写一个方法即可实现生产所有手机,即高可拓展性
		p.call();
	}
}
/*===============================结束 分割线================================*/



/*===============================起始 分割线================================*/
//解决:创建一个手机接口,让我们需要生产的手机都继承它
interface Phone {
	public void call();
}

//小米Note
class MiNote implements Phone{
	public void call() {
		System.out.println("小米Note打电话");
	}
}

//红米
class RedMi implements Phone {
	public void call() {
		System.out.println("红米打电话");
	}
}
/*===============================结束 分割线================================*/


public class Main {
	public static void main(String[] args) {
		MiFactory factory = new MiFactory();
		factory.createPhone(new MiNote());
		factory.createPhone(new RedMi());
	}
}
/* 输出:
	小米Note打电话
	红米打电话
*/

西门子S7-1200/1500 PLC编程与应用技巧 西门子S7-1200 PLC是一款紧凑型的控制器,适用于小型到中型的自动化控制任务。紧凑设计:集成了I/O模块,减少了控制柜的空间需求。高性能:高达25µs的扫描时间,能够快速响应。模块化扩展:支持扩展输入输出模块、通信模块和智能模块,满足不同的应用需求。多种编程语言:支持Ladder图(梯形图)、功能块图(FBD)、结构化文本(ST)等多种编程语言。西门子S7-1200与S7-1500 PLC是强大且灵活的工业控制系统,适用于各种自动化应用。 阅读详情

相关推荐

Windows下构建ImGui.Net

工具 Visual Studio 2017 操作 下载项目 git clone https://github.com/mellinoe/ImGui.NET.git 编译 右键以下两个项目并调试: ImGui.NET.SampleProgram ImGui.NET.SampleProgram.XNA Error fix 中间遇到一些问题: SDK版本不对 去微软官网下载安装对应版本 由于设置了代理被远程服务器拒绝连接 关闭代理(也许在环境变量中) nuget源无对应资源,404 NOT FOUN

jojozym的博客 1487

面向对象之继承

继承的基本概念: 1、继承是从已有的类中建立新类的过程 2、继承是面向对象的三大特征之一 3、被继承的类被称为父类(超类),继承父类的类叫做子类(派生类) 4、继承是指一个对象直接使用另一个对象的方法和属性(非私有的) 5、通过继承可以实现代码的重用 举例类图的如下: li“猫、狗、鸡,猪”,都属于动物类,所以“猫、狗、鸡,猪”这四个类是动物的派生类,而动物则是超类,派生类可以继承超类的属性和方法,比如...

WuHuaSen的博客 2782

【重磅更新】CT/MRI LI-RADS 2024:肝细胞癌局部区域治疗后反应评估的核心突破与临床实践指南

减少过度治疗:辐射 LRT 的 Nonprogressing 类别避免了 “持续强化 = 存活” 的误判,降低不必要的再治疗风险;提高检出效率:非辐射 LRT 的辅助特征升级减少了 Equivocal 比例,更早识别存活肿瘤;统一评估语言:标准化的分类标准为放射科、肝病科、肿瘤科、肝移植科的多学科协作(MDT)提供了统一 “沟通工具”,助力治疗方案的精准制定。

楚山之石的博客 1225

面向对象的继承

1、认识对象的原型 JavaScript当中每个对象都有一个特殊的内置属性 [[prototype]],这个特殊的对象可以指向另外一个对象。 那么这个对象有什么用呢? 当我们通过引用对象的属性key来获取一个value时,它会触发 [[Get]]的操作; 这个操作会首先检查该属性是否有对应的属性,如果有的话就使用它; 如果对象中没有改属性,那么会访问对象[[prototype]]内置属性指向的对象上的属性; 那么如果通过字面量直接创建一个对象,这个对象也会有这样的属性吗?如果有,应该如何获取这个属性呢?

浮游的博客 914

高通量测序数据分析:RNA-seq

深度测序相关数据库与数据格式 SRA toolkit 一、NCBI 和EBI、DDBJ组成INSDC,数据内容相同所以找NCBI就行。 (一)NCBI常用数据库 GenBank:遗传序列数据库,收集了所有公开的DNA序列及其注释 GEO (Gene Expression Omnibus) :收集整理各种表达芯片数据,后来加入了甲基化、lncRNA、miRNA、CNV等其他芯片,还有高通量测序数据...

qq_41134363的博客 3万+

[Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--地图(一)

上面3章图是完成后的效果图 游戏已完成,除了英雄外,基本还原了90%的游戏内容,一共13关,20种防御塔,30+种敌人,如上图,以假乱真吧 下面从地图模块起介绍我的方法,如有更好的方法,请留言一起讨论,游戏资源下载原版游戏数据包,解压即可 推荐一款软件,TextureUnpackerRelease1.04可以分割plist形式的图片,提高效率 经过一个月学习也发现之前有很多化简为繁的错误

7172

面向对象,类的继承

面向对象一种认识世界、分析世界的方法论。将万事万物抽象为类。类class类是抽象的概念,是万事万物的抽象,是一类事物的共同特征的集合。用计算机语言来描述类,就是属性和方法的集合。对象instance、object对象是类的具象,是一个实体。对于我们每个人这个个体,都是抽象概念人类的不同的实体。 面向对象3要素 封装组装:将数据和操作组装到一起。隐藏数据:对外只暴露一些接口,通过接口访问对象。比如...

weixin_34236869的博客 176

EG2134驱动芯片实战:如何用TSSOP20封装搞定三相无刷电机驱动(附电路图)

本文详细介绍了EG2134驱动芯片在三相无刷电机驱动中的应用实践,包括芯片选型、电路设计和PCB布局技巧。EG2134作为一款高性能半桥驱动芯片,采用TSSOP20封装,适合紧凑型设计。文章还提供了典型应用电路图和调试指南,帮助工程师快速实现稳定可靠的电机驱动方案。

d3e4f的博客 306

Python--面向对象--类的继承

类的继承基本概念定义单一继承(括号类写一个)取当前实例类型的名称继承的特殊属性和方法继承中的访问控制方法的重写、覆盖overridesuper()类方法和静态方法继承时使用初始化示例1示例2正确初始化 基本概念 面向对象三要素之一,继承Inheritance 在面向对象的世界中,从父类继承,就可以直接拥有父类的属性和方法,这样可以减少代码、多复用。子类可以定义自己的属性和方法 定义 格式如下 cl...

python_lqx的博客 2423

分子模拟入门教程 | 低调使用 建议收藏

该方法只需要原子的核电荷和少数模拟的环境参数作为输入,所有的性质都是通过求解薛定谔方程得到的,不需要使用任何经验参数。经典的原子水平的分子模拟已经成为提高我们对材料科学和生命系统中分子过程理解的最流行的方法之一。全原子模拟是一种非常强大的以原子分辨率呈现信息的方法,因为在原子模拟中,一个粒子代表一个特定的原子。随着计算机硬件和模拟技术的快速发展,分子模拟不仅可以解决基本的、常规的化学问题,还可以应用于各种复杂体系。然而,由于问题的复杂性以及严重依赖于现象的现实情况,最好是逐案确定合适的模拟方法。

pysonger的博客 782

Transformer从菜鸟到新手(一)

从本文开始回顾一下Transformer的原理与实现细节,包括分词算法BPE的实现。最终利用从零实现的Transformer模型进行英中翻译。

日积月累,天道酬勤 2124

面向对象_继承案例和继承的好处与继承的弊端

/* 继承概述: 把多个类中相同的内容给提取出来定义到一个类中。 如何实现继承呢? java提供了关键字:extends 格多: //class 子类名,派生类名 extends 父类名,基类名,超类名 {} class 子类名 extdens 父类名 {} 好处: A:提高了代码的复用性。 B:提高了代码的维护性。 C:让类与类产生的关系,是多态的前提 这里其

辐_射的博客 3506

边缘AI工业落地:YOLO26-Seg + RK3588 NPU 极致部署(低功耗+实时实例分割,工业场景全覆盖)

本次实战汇总了「YOLO26-Seg+RK3588 NPU」工业边缘部署中最常见、最致命的8个坑点,所有坑点均来自真实工业项目,解决方案均为零代码/一键操作,无需复杂配置,能让你少走90%的弯路,节省大量时间,必看必记!❌ RKNN转换报错「算子不支持/模型加载失败」→ ✅ 导出ONNX时必须指定opset=12,重新导出即可,RK3588唯一兼容版本;❌ 分割mask错位/轮廓模糊 → ✅ 导出ONNX时加,并保证RKNN的归一化参数与YOLO26一致,零代码修复;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1717

Java面向对象核心:类、对象、封装、继承与多态详解

编程语言的学习中,掌握面向对象(OOP)思想是进阶的关键。许多开发者能背诵类与对象的定义,却难以在项目中构建清晰的协作模型。本文从最基础的类与对象概念切入,逐步解析构造方法、引用传递、对象数组等易错细节,深入探讨封装、继承、多态三大特性是如何解决实际开发中的代码复用与扩展问题,并对比抽象类与接口的设计语义。同时,针对重写与重载、equals与hashCode、静态成员访问等高频面试与实战陷阱进行剖析。无论你是刚学完Java基础语法的新手,还是准备面试的求职者,本文都能帮助你从语法理解跃升到设计思维,真正写出

weixin_33824385的博客 292

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java继承类的编程_Java面向对象编程之类的继承详解

本文实例讲述了java面向对象编程之类的继承。分享给大家供大家参考,具体如下:继承:特殊类拥有一般类的全部属性与行为。继承好处:1.提高了代码的复用性2.让类与类之前产生了关系,有了这个关系才有多态的特性。继承是类和类之前的关系。注意事项:1.java只支持单继承,不支持多继承。因为多继承有安全隐患:当多个父类定义相同的函数,但是功能不同时,子类不知道运行哪一个。2.子类继承父类时,继承了父类的所...

weixin_33507838的博客 242

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java继承详解:理解类与类之间的关系,掌握面向对象编程的精髓!

1.4.2 子类中访问父类的成员方法。

2301_80221228的博客 3042

Python面向对象深度探索:对比Java,详解类、继承、self与魔法方法

a name="1-类定义-class-definition"></a>Java主要区别: Python原生支持从多个具体类继承(多重继承),而Java类是单继承,但可以通过实现多个接口来达到类似效果。

冷脸萌萌的技术实践 4020

Java 面向对象 (类和对象、继承、封装、多态、接口、抽象类)一文详解

Java 面向对象 (类和对象、继承、封装、多态、接口、抽象类)一文详解

qq_62144826的博客 1422

Java面向对象编程:类与对象、继承、多态及final关键字详解

本文系统讲解了Java面向对象编程的核心概念:1. 类与对象的关系及内存模型,以链表实现为例说明对象引用机制;2. 继承的实现方式及对象创建顺序;3. 多态的条件与优势;4. final关键字对变量、方法和类的不可变保证。文章强调面向对象设计应遵循"组合优于继承"原则,合理使用final确保组件稳定性,善用多态提高扩展性,并提供了抽象类与子类的实践示例,帮助开发者构建健壮、可维护的Java程序。

2402_83075343的博客 783

Java面向对象基础(一):类、对象、封装、继承、多态核心详解

编程语言从面向过程到面向对象的演进,解决了代码复用与维护性的核心痛点。类与对象作为Java中最基础的抽象单元,将数据与行为封装为整体,配合继承实现层次复用,通过多态让程序具备弹性扩展能力。理解构造方法、访问修饰符、动态绑定等底层机制,是写出高质量Java代码的关键。在企业级应用开发中,无论是Spring框架的Bean管理,还是业务系统的模块化设计,都离不开面向对象思想的支撑。本文系统梳理了类和对象、封装、继承、多态四大基础概念,并结合高频面试考点与实战避坑经验,帮助初学者彻底告别“C语言味儿”的Java代码

weixin_30846347的博客 287

Java面向对象

Java面向对象 什么是面向对象 现实世界就是“面向对象的”,任何存在的事物都可以看作“对象”。 面向对象就是采用“现实模拟”的方法设计和开发程序,实现了虚拟世界和现实世界的一致性,符合人们的思维习惯,使客户和软件设计开发人员之间、软件设计开发人员内部交流更加流畅,同时有代码重用性高、可靠性高等优点,大大提高了软件尤其是大型软件的设计和开发效率。 面向对象设计三步骤: 发现类。 发现类的属...

Zengyh_的博客 274

Java面向对象进阶——封装、继承、构造

(1)语法格式:package 包名(2)包不能以 java、javax开头(3)包名通常是全部小写的ASCII字母,并且是一个顶级域名com/deu/gov/net及org,通常使用域名的倒序,如 adam.com 可以声明为 com.adam.projectname.mypackage(4)定义包后,Java会在硬盘上生成与包意一一对应的目录。Java 中封装的实质就是将类的状态信息(成员变量)、方法等隐藏在类的内部,不允许外部程序直接访问,而是。

weixin_70890083的博客 278

java类的继承

类的继承是Java面向对象的一个重点,想要Java入门就必须掌握继承这个知识点,下面由我来分享一下类的继承这个内容,本文章仅代表个人想法,仅供参考。

m0_48844699的博客 1283

java 类的继承_Java:类与继承

Java:类与继承对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础。抽象、封装、继承、多态 这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知识。首先,我们讲述一下与类的初始化相关的东西, 然后再从几个方面阐述继承这一大特性。以下是本文的目录大纲:一.你了解类吗?二.你了解继承吗?三.常见的面试笔试题若有不正之处,请多多谅解并欢迎批评指正。...

weixin_39726267的博客 165

用实例详解Java中的类、对象、继承及多态性,一文理解Java类和对象、多态性的概念

/ 成员变量int age;// 构造方法// 成员方法System.out.println("汪汪汪!");在这个例子中,Dogbreedage和color,以及一个构造方法和一个成员方法bark。在Java中,使用extends// 新的成员变量// 新的构造方法// 调用父类构造方法// 新的成员方法System.out.println("捡回来了!");在这个例子中,类继承了Dog类,并添加了新的成员变量isTrained和新的成员方法fetch。

码农超哥的博客 1160

JAVA面向对象的三大特征--继承,干货详解

在今天的这篇文章中详细讲解面向对象的第二大特征--继承!我们之前操作的类一般都是单个的类,还没有怎么同时处理过两个类,而从继承的知识点开始,我们就会处理父子两个类之间的关系了。

关注我!带你一路 "狂飙" 到底! 529

java 集成_Java:类与继承

Java:类与继承对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础。抽象、封装、继承、多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知识。首先,我们讲述一下与类的初始化相关的东西,然后再从几个方面阐述继承这一大特性。以下是本文的目录大纲:一.你了解类吗?二.你了解继承吗?三.常见的面试笔试题若有不正之处,请多多谅解并欢迎批评指正。请尊...

weixin_30769779的博客 249
上一篇: 【中文技术文档的写作规范_P03】如何书写标点符号和控制文档体系
下一篇: 【Java面向对象】抽象类详解
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值