湖北师范大学-Java面向对象 - 封装、继承和多态

Java头歌4.2 类的封装、继承、多态(含抽象类、接口知识) 本关任务:按要求编写一个Java应用程序,巩固Java面向对象知识。 阅读详情

目录

第1关:什么是封装,如何使用封装

第2关:什么是继承,怎样使用继承

第3关:super关键字的使用

第4关:方法的重写与重载

第5关:抽象类

第6关:final关键字的理解与使用

第7关:接口

第8关:什么是多态,怎么使用多态


第1关:什么是封装,如何使用封装

编程要求
根据提示,在右侧编辑器Begin-End处补充代码:

声明一个Person类,私有化属性name和age,并将字段封装起来;

在Person类中定义一个talk()方法,打印姓名和年龄信息;

在main方法中声明并实例化一Person对象p,给p中的属性赋值,调用talk()方法打印  我是:张三,今年:18岁。

测试说明
测试输入: 无
预期输出:
我是:张三,今年:18岁

开始你的任务吧,祝你成功!

package case1;

public class TestPersonDemo {
	public static void main(String[] args) {
		/********* begin *********/
		// 声明并实例化一Person对象p
Person p=new Person();
		// 给p中的属性赋值
p.set("张三",18);
		// 调用Person类中的talk()方法
p.talk();
		/********* end *********/

	}
}

// 在这里定义Person类
class Person {
	/********* begin *********/
private String name;
private int age;
public void set(String name,int age){
    this.name=name;
    this.age=age;
}

void talk(){
    System.out.println("我是:"+this.name+",今年:"+this.age+"岁");
}
	/********* end *********/
}

第2关:什么是继承,怎样使用继承

编程要求
根据提示,在右侧编辑器Begin-End处补充代码:

声明一个Animal类,将属性name和age封装起来,提供对外的公共访问方法;

声明一个Cat类和Dog类,都继承Animal类,分别定义各自的voice方法和eat方法;

在main方法中分别实例化一个Cat对象和Dog对象,设置各自的属性并调用这两个方法,再打印出名字和年龄信息;

具体具体输出要求请看测试说明。

测试说明
测试输入:无
预期输出: 
大花猫喵喵叫
大花猫吃鱼
大花猫6岁
大黑狗汪汪叫
大黑狗吃骨头
大黑狗8岁

开始你的任务吧,祝你成功!

package case2;

public class extendsTest {
	public static void main(String args[]) {
		// 实例化一个Cat对象,设置属性name和age,调用voice()和eat()方法,再打印出名字和年龄信息
		/********* begin *********/
       
Cat c=new Cat();
c.name="大花猫";
c.age=6;
c.voice();
c.eat();
System.out.println(c.name+c.age+"岁");
		/********* end *********/

		// 实例化一个Dog对象,设置属性name和age,调用voice()和eat()方法,再打印出名字和年龄信息
		/********* begin *********/
Dog d=new Dog();
d.name="大黑狗";
d.age=8;
d.voice();
d.eat();
System.out.println(d.name+d.age+"岁");
		/********* end *********/

	}
}

class Animal {
	/********* begin *********/
public String name;
public int age;


	/********* end *********/

}

class Cat extends Animal {
	// 定义Cat类的voice()和eat()方法
	/********* begin *********/
   
public void voice(){
    System.out.println(name+"喵喵叫");
}
public void eat(){
    System.out.println(name+"吃鱼");
}
	/********* end *********/
}

class Dog extends Animal {
	// 定义Dog类的voice()和eat()方法
	/********* begin *********/
public void voice(){
    System.out.println(name+"汪汪叫");
}
public void eat(){
    System.out.println(name+"吃骨头");
}
	/********* end *********/
}

第3关:super关键字的使用

编程要求
根据提示,在右侧编辑器Begin-End处补充代码:

声明一个名为Person的类,里面有name与age两个属性,并声明一个含有两个参数的构造方法;

声明一个名为Student的类,此类继承自Person类,添加一个属性school,在子类的构造方法中调用父类中有两个参数的构造方法;

实例化一个Student类的对象s,为Student对象s中的school赋值,打印输出姓名:张三,年龄:18,学校:哈佛大学。

测试说明
测试输入:无
预期输出:
姓名:张三,年龄:18,学校:哈佛大学

开始你的任务吧,祝你成功!

package case3;

public class superTest {
	public static void main(String[] args) {
		// 实例化一个Student类的对象s,为Student对象s中的school赋值,打印输出信息
		/********* begin *********/
Student s=new Student();
s.school="哈佛大学";
System.out.println(",学校:"+s.school);
		/********* end *********/
	}
}

class Person {
	/********* begin *********/
String name;
int age;
Person(String name,int age){
this.name=name;
this.age=age;
}
	/********* end *********/
}

class Student extends Person {
	/********* begin *********/
String school;
Student(){
    super("张三",18);
System.out.print("姓名:"+name+",年龄:"+age);
}
	/********* end *********/
}

第4关:方法的重写与重载

编程要求
根据提示,在右侧编辑器补充代码。

声明一个名为Person的类,里面声明name与age两个属性,定义talk()方法返回姓名和年龄信息;

声明一个名为Student的类,此类继承自Person类,添加school属性,声明带三个参数的构造方法,复写talk()方法,在该方法中调用父类的talk()方法,返回姓名、年龄和学校信息;

实例化子类对象s,调用talk()方法打印我是:张三,今年:18岁,我在哈佛大学上学。

测试说明
测试输入: 无
预期输出:
我是:张三,今年:18岁,我在哈佛大学上学

开始你的任务吧,祝你成功!

package case4;

public class overridingTest {
	public static void main(String[] args) {
		// 实例化子类对象s,调用talk()方法打印信息
		/********* begin *********/
Student s=new Student("张三",18,"哈佛大学");
s.talk();
		/********* end *********/
		
	}
}

class Person {
	/********* begin *********/
String name;
int age;
public void talk(){
    System.out.println("我是:"+name+",今年:"+age+"岁");
}
	/********* end *********/
}

class Student extends Person {
	/********* begin *********/
String school;
Student(String name,int age,String school){
    this.name=name;
    this.age=age;
    this.school=school;
}
public void talk(){
    System.out.println("我是:"+this.name+",今年:"+this.age+"岁,我在"+this.school+"上学");
}
	/********* end *********/
}

第5关:抽象类

编程要求
根据提示,在右侧编辑器补充代码:

声明一个名为Person的抽象类,在Person类中声明了三个属性name、age和occupation和一个抽象方法talk();

声明一个Student类和一个Worker类,都继承自Person类,添加带有三个参数的构造方法;

分别实例化Student类与Worker类的对象,分别调用各自类中被复写的talk()方法打印输出信息;

具体输出要求请看测试说明。

测试说明
测试输入: 无
预期输出:
学生——>姓名:张三,年龄:20,职业:学生!
工人——>姓名:李四,年龄:30,职业:工人!

开始你的任务吧,祝你成功!

package case5;

public class abstractTest {
	public static void main(String[] args) {
		/********* begin *********/
		// 分别实例化Student类与Worker类的对象,并调用各自构造方法初始化类属性。
		Student s=new Student("张三",20,"学生");
        s.talk();
        Worker w=new Worker("李四",30,"工人");
        w.talk();
		// 分别调用各自类中被复写的talk()方法 打印信息。
		
		/********* end *********/
		
	}
}

// 声明一个名为Person的抽象类,在Person中声明了三个属性name age occupation和一个抽象方法——talk()。
abstract class Person {
	/********* begin *********/
String name;
int age;
String occupation;
void talk(){}
	/********* end *********/
}

// Student类继承自Person类,添加带三个参数的构造方法,复写talk()方法 返回姓名、年龄和职业信息
class Student extends Person {
	/********* begin *********/
Student(String name,int age,String occupation){
    this.name=name;
    this.age=age;
    this.occupation=occupation;
}
void talk(){
    System.out.println("学生——>姓名:"+this.name+",年龄:"+this.age+",职业:"+this.occupation+"!");
}
	/********* end *********/
}

// Worker类继承自Person类,添加带三个参数的构造方法,复写talk()方法 返回姓名、年龄和职业信息
class Worker extends Person {
	/********* begin *********/
Worker(String name,int age,String occupation){
    this.name=name;
    this.age=age;
    this.occupation=occupation;
}
void talk(){
    System.out.println("工人——>姓名:"+this.name+",年龄:"+this.age+",职业:"+this.occupation+"!");
}
	/********* end *********/

}

第6关:final关键字的理解与使用

编程要求
根据提示,在右侧编辑器Begin-End处补充代码:

仔细阅读代码,在右侧编辑器中调整代码使程序能正确编译运行;

具体输出要求请看测试说明。

测试说明
测试输入:无
预期输出:
speedlimit=120
running safely with 100kmph
running safely with 100kmph

开始你的任务吧,祝你成功!

package case6;

public class finalTest {
	public static void main(String args[]) {
		Bike1 obj = new Bike1();
		obj.run();

		Honda honda = new Honda();
		honda.run();

		Yamaha yamaha = new Yamaha();
		yamaha.run();
	}
}
//不可以修改 final 变量的值
// final方法,不可以重写
//// 不可以扩展 final 类
    //请在此添加你的代码
    /********** Begin *********/
	class Bike1 {
	 int speedlimit = 90;

	void run() {
		speedlimit = 120; 
		System.out.println("speedlimit=120");
	}

}

class Bike2 {
	 void run() {
		System.out.println("running");
	}
}

class Honda extends Bike2 {
	void run() { 
		System.out.println("running safely with 100kmph");
	}

}

 class Bike3 {
}

class Yamaha extends Bike3 { 
	void run() {
		System.out.println("running safely with 100kmph");
	}

}
    /********** End **********/

第7关:接口

编程要求
根据提示,在右侧编辑器补充代码:

声明一Person接口,并在里面声明三个常量:name、age、occupation,并分别赋值;

声明一Student类,此类实现Person接口,并复写Person中的talk()方法;

实例化一Student的对象s,并调用talk()方法,打印信息;

具体输出要求请看测试说明。

测试说明
测试输入:无
预期输出:
学生——>姓名:张三,年龄:18,职业:学生!

开始你的任务吧,祝你成功!

package case7;

public class interfaceTest {
	public static void main(String[] args) {
		// 实例化一Student的对象s,并调用talk()方法,打印信息
		/********* begin *********/
Student s=new Student();
s.talk();
		/********* end *********/

	}
}

// 声明一个Person接口,并在里面声明三个常量:name、age和occupation,并分别赋值,声明一抽象方法talk()
interface Person {
	/********* begin *********/
String name="张三";
int age=18;
String occupation="学生";
void talk();
	/********* end *********/
}

// Student类继承自Person类 复写talk()方法返回姓名、年龄和职业信息
class Student implements Person {
	/********* begin *********/
public void talk(){
    System.out.println("学生——>姓名:"+name+",年龄:"+age+",职业:"+occupation+"!");
}
	/********* end *********/
}

第8关:什么是多态,怎么使用多态

编程要求
根据提示,在右侧编辑器补充代码:

声明一个Animal类,此类中定义eat()方法;

声明Dog类、Cat类、Lion类,均继承自Animal类,并复写了eat()方法;

运用多态方式实例化子类对象并调用eat()方法打印输出信息;

具体输出要求请看测试说明。

测试说明
测试输入:无
预期输出:
eating bread...
eating rat...
eating meat...

开始你的任务吧,祝你成功!

package case8;

public class TestPolymorphism {
	public static void main(String[] args) {
		// 以多态方式分别实例化子类对象并调用eat()方法
		/********* begin *********/
Animal a=new Cat();
a.eat();
Animal b=new Dog();
b.eat();
Animal c=new Lion();
c.eat();		/********* end *********/
	}
}

// Animal类中定义eat()方法
class Animal {
	/********* begin *********/
public void eat(){}
	/********* end *********/
}

// Dog类继承Animal类 复写eat()方法
class Dog extends Animal {
	/********* begin *********/
public void eat(){
    System.out.println("eating rat...");
}
	/********* end *********/
}

// Cat类继承Animal类 复写eat()方法
class Cat extends Animal {
	/********* begin *********/
public void eat(){
    System.out.println("eating bread...");
}
	/********* end *********/
}

// Lion类继承Animal类 复写eat()方法
class Lion extends Animal {
	/********* begin *********/
public void eat(){
    System.out.println("eating meat...");
}
	/********* end *********/
}

Java头歌 3.1 封装、继承和多态 封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式。本关任务:掌握继承的基本概念以及怎么使用继承。抽象类的定义规则:抽象类和抽象方法都必须用abstract关键字来修饰;抽象类不能被实例化,也就是不能用new关键字去产生对象;抽象方法只需声明,而不需实现;含有抽象方法的类必须被声明为抽象类,抽象类的子类必须复写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。抽象类的定义格式:abstract class 类名称 // 定义抽象类声明数据成员; 阅读详情

相关推荐

Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析.md

Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析

Educoder–Java面向对象(第二章)- 封装、继承和多态【笔记+参考代码】

Educoder–Java面向对象(第二章)- 封装、继承和多态【笔记+参考代码】 第一关 编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 声明一个Person类,私有化属性name和age,并将字段封装起来; 在Person类中定义一个talk()方法,打印姓名和年龄信息; 在main方法中声明并实例化一Person对象p,给p中的属性赋值,调用talk()方法打印 我是...

fuhanghang的博客 4万+

WRF后处理:python cartopy绘制土地利用/土地分类图//python绘制WRF下垫面类型(以北极为例)

下垫面类型对于WRF的地表过程十分重要,而在我们研究WRF的地表过程之前,需要对输入的土地利用类型进行一些绘制,以便后续的修改。LU_MODIS21函数定义了绘制的土地类型、标签与对应色标,我们使用时,直接引用LU_MODIS21()即可返回。其实很简单,只要将你拥有的土地类型数据提取出来,将原本函数中的labels和C切片,重新定义色标再绘制即可。在这里,我将以北极地区为例,绘制北极地区的WRF下垫面数据,我使用的MODIS21这类。

weixin_43750300的博客 3859

面向对象-封装、继承、多态《笔记——代码块》

Java面向对象-封装、继承、多态 第一题 编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 声明一个Person类,私有化属性name和age,并将字段封装起来; 在Person类中定义一个talk()方法,打印姓名和年龄信息; 在main方法中声明并实例化一Person对象p,给p中的属性赋值,调用talk()方法打印 我是:张三,今年:18岁。 测试说明 测试输入: 无 预期输出: 我是:张三,今年:18岁 完整代码 package case1; public class

爱笑的博客 6812

飞塔防火墙认证绕过漏洞(CVE-2022-40684)深度剖析与实战复现

本文深度剖析了Fortinet飞塔防火墙高危认证绕过漏洞CVE-2022-40684的原理与影响。该漏洞允许攻击者通过构造包含特定Forwarded头和User-Agent的HTTP请求,无需凭证即可绕过认证,以管理员身份访问设备。文章详细演示了从环境搭建到实战复现,最终植入SSH密钥获取控制权的完整过程,并提供了漏洞挖掘技巧与关键防御建议。

d6e7f8g9h的博客 708

手把手教你用U盘制作Win11启动盘:从PE工具到系统安装全流程

本文提供了一份详尽的Windows 11启动盘制作与系统安装全流程指南。从选择合适的U盘和PE工具开始,重点讲解了如何正确制作包含EFI引导分区的启动盘,并详细演示了在PE环境下进行GPT分区、使用CGI工具安装系统镜像,以及首次启动后的关键设置步骤,帮助用户轻松完成从零到一的系统安装。

weixin_28475533的博客 1289

【课程设计】博物馆展品介绍及相关文创产品导购APP 计算机毕业设计源码40027

基于Spring Boot的服务博物馆展品介绍及相关文创产品导购APP,该平台结合了APP应用和MySQL数据库,旨在服务普通用户、销售用户、导览用户和管理员,博物馆展品介绍及相关文创产品导购APP实现包含多项关键功能,涵盖系统管理、展品信息管理、展品分类管理、展览活动管理、报名记录管理、资源管理等多个领域的管理与互动。通过使用Spring Boot技术框架,实现了快速开发和灵活部署的优势,同时借助APP提供用户友好的交互界面,以及MySQL数据库管理数据持久化与安全性,能够有效支持平台功能的实现与扩展..

Biye_Design的博客 661

基于rms包的限制性立方样条回归(RCS)R代码实现

RCS

2301_79584199的博客 2万+

抽象类

通过继承,可以从原有的类派生出新的类。原有的类称为基类或父类,而新的类则称为派生类或子类。通过这种机制,派生出的新的类不仅可以保留原有的类的功能,而且还可以拥有更多的功能。 除了上述的机制之外,Java也可以创建一种类专门用来当作父类,这种类称为“抽象类”。抽象类的作用有点类似“模版”,其目的是要设计者依据它的格式来修改并创建新的类。但是并不能直接由抽象类创建对象,只能通过抽象类派生出新的类,再

longshan_2009的专栏 782

088、多摄像头跨镜目标追踪 ID 频繁切换?ReID 特征 + 轨迹关联 + 时间约束方案

文章摘要:本文针对多摄像头跨镜目标追踪中ID频繁切换的问题,提出了一种结合ReID特征、轨迹关联和时间约束的综合解决方案。作者分析了ID切换的三个主要原因:ReID特征不稳定、轨迹关联依赖最近邻匹配以及忽略时间约束。通过改进ReID特征提取(多层特征融合)、引入轨迹预测(卡尔曼滤波)和添加时间窗口约束,成功将ID切换率从35%降至3%以下。文章详细分享了实现细节和踩坑经验,为跨摄像头目标追踪提供了实用优化思路。

ai技术增长的博客 169

机器学习的低代码与无代码平台:便捷入门之路

机器学习领域正涌现出大量低代码和无代码平台,使非技术人员也能轻松应用AI技术。低代码平台(如PyCaret、H2O AutoML)需少量编程但灵活性强,而无代码工具(如Google Cloud AutoML、Teachable Machine)则完全无需编程基础。这些平台覆盖图像识别、文本处理、业务预测等多种场景,适合快速部署简单项目。但专业人士仍需注意,这些工具无法替代复杂场景下的定制化开发。随着技术进步,低门槛AI工具正在改变各行业的创新方式。

2501_90323865的博客 154

黑马程序员——声明类Person,包含2个成员变量:name、age。定义函数sayHello(),调用时输出:我叫***,今年***岁了。声明类Chinese继承Person

package com.itheima; /*  *第7题:  * 声明类Person,包含2个成员变量:name、age。定义函数sayHello(),调用时输出:我叫***,今年***岁了。声明类Chinese继承Person  */ public class Person { private String name;//姓名     String gender;//性别

xiaomai0703的专栏 3596

基于深度学习的灰度图像气泡群识别与优化

灰度图像气泡群深度学习识别优化研究 本研究针对MATLAB实现的深度学习气泡群识别系统在从1445个点到4992个点扩展时出现的精度不稳定问题,提出了一套完整的解决方案。文章首先分析了问题根源,包括数据复杂度增加、类别不平衡、网络容量不足等因素,然后系统性地提出了数据预处理增强、网络架构优化、训练策略调整和后处理算法改进等优化措施。通过改进的U-Net架构、自适应直方图均衡化等技术创新,有效提升了模型在大规模气泡群图像上的识别精度和稳定性,为化工、生物医学等领域的灰度图像分析提供了可靠的技术支持。

max500600的博客 412

JAVA面向对象的继承和多态

今天来学习JAVA的面向对象的继承与多态 何为继承? 和我们生活中的继承是一个意思,子女可以继承父母的车、房、财产,姓氏等······ 在java中,继承使用的关键字是extends。 子类可以继承父类的属性、方法。 在Java中,继承只能单继承,所以一个子类只能继承一个父类。但是一个父类允许有多个子类。 为何要使用继承? 实现了代码的重用,相同的代码不需要重复的编写。 子类继承父类,可以直接享受父类中已经封装好的属性以及方法,不需要再次开发。 子类可以根据自己的属性,封装自己特有的属性和方法。 如何使用?

qq_52010422的博客 1641

PCL 4PCS算法实现点云粗配准【2026最新版】

博客长期更新,本文最新更新时间为:2026年5月11日。

点云侠的博客 30万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

十三、 封装、继承和多态

第1关:什么是封装,如何使用封装 任务描述 本关任务:构造一个类,把对象的属性封装起来,同时提供一些可以被外界访问属性的方法。 相关知识 为了完成本关任务,你需要掌握:1.什么是封装;2.封装的意义;3.实现Java封装的步骤。 什么是封装 封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式。 封装时的权限控制符区别如下: 封装的意义 对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。使用封装有四大好处: 良好的封装能够减少耦合。 ...

CaesarQu的博客 7953

深度学习工具包 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学习笔记

封装把一个对象的属性私有化,同时提供一些可以被外界访问属性的方法,如果不想被外界访问,我们大可不必提供方法给外界访问。对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。封装可以使我们容易地修改类的内部实现,而无需修改使用了该类的客户代码,就可以对成员变量进行更精确的控制。属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。构造一个类,把对象的属性封装起来,同时提供一些可以被外界访问属性的方法。变量)之间发生的同名的冲突。

little_fan_XT的博客 702

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Day06

面向对象之二 继承 是面向对象语言重要设计思想, 实现代码可重用,可扩展 子类继承父类使用extends关键字,一个类只能直接继承一个父类,但是可以间接继承。继承之 后子类可以调用父类的所有非私有属性和非私有方法。 继承的格式:访问权限修饰符 子类名 extends 父类名{子类体} 继承具有传递性:C类从B类继承,B类又从A类继承 那么C类就具有B类和A类的所有非私有属 性和非私有方法。如果一个类没有显示的继承其他类,那么默认会继...

weixin_43645809的博客 1510

每日一练_22. Java面向对象 - 封装、继承和多态. 第5关:抽象类.

public class educoder05{ public static void main(String[] args) { /********* begin *********/ // 分别实例化Student类与Worker类的对象,并调用各自构造方法初始化类属性。 Student student = new Student("张三",20,"学生"); Worker work = new Worker("李四",30,"工人...

redemption____的博客 1988

接口,第七题,面向对象

接口的定义 接口(interface)是Java所提供的另一种重要技术,它的结构和抽象类非常相似,也具有数据成员与抽象方法,但它与抽象类又有以下两点不同: 接口里的数据成员必须初始化,且数据成员均为常量; 接口里的方法必须全部声明为abstract,也就是说,接口不能像抽象类一样保有一般的方法,而必须全部是“抽象方法”。 接口定义的语法如下: interface 接口名称 // 定义抽象类 { final 数据类型 成员名称 = 常量; //数据成员必须赋初值 ab

weixin_55450615的博客 2615

Java面向对象 - 封装、继承和多态

简介 面向对象的三个基本特征是:封装、继承和多态。 封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类)。封装和继承的目的都是:代码重用。而多态则是为了实现另一个目的 —— 接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。 本实训主要学习面向对象三大基本特性:封装、继承和多态。 第1关:什么是封装,如何使用封装 任务描述 相关知识 什么是封装 封装的意义 编程要求 测试说明 任务描述 本关任务:构造

aiains的博客 7052

Java面向对象 - 封装、继承和多态 final关键字的理解与使用

学习-Java继承和多态之final关键字 final关键字的理解与使用

drizzle2333的博客 2107

头歌java面向对象,类与对象

第二关 构造方法 编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 创建一个Person类,给Person类定义一个无参构造方法和一个有参构造方法,有参构造方法定义两个String类型参数name和sex在main方法中调用无参构造和有参构造方法; 调用无参构造方法输出:一个人被创建了; 调用有参构造方法应根据输入的数据输出对应的结果,如输入:张三,男,则输出:姓名:张三,性别:男,被创建了。 测试说明 测试输入:张富贵,未知 预期输出: 一个人被创建了 姓名:张富贵,性别:未知,被创建了 总

weixin_45385429的博客 1万+

java封装,继承和多态

1 package case8; public class TestPolymorphism { public static void main(String[] args) { // 以多态方式分别实例化子类对象并调用eat()方法 /********* begin *********/ Animal a=new Cat(); Animal b=new Dog(); Animal c...

NJU phd 在读。 3115

编写 Java Person。该类中应该有两个属性:姓名(name)和年龄 (age) 。定义构造方法用来初始化数据成员。再定义显示(display()) 方法将姓名和年龄打印出来。

public class Person { String name; int age; public Person(String Name,int Age){ name= Name; age = Age; } public void display(){ System.out.println("姓名"+name); System.out.println("年龄"+age); } ..

Tlllallll的博客 8126

《代码阅读方法》---笔记(第七章)

第七章:编码规范和约定 关于代码规范建议去阅读阿里出品的泰山版《Java开发手册》 https://developer.aliyun.com/topic/java2020?utm_content=g_1000113321 1.格式规范 阅读代码时,首先要确保您的编辑器或优美打印程序的tab设置,与代码遵循的风格规范一致。 可以使用代码块的缩进,快速地掌握代码的总体结构。 对于编排不一致的代码,应该立即给予足够的警惕。 2.命名规范 常量使用大写字母命名,单词用下划线分隔。 在遵循Java格式的程序中,

weixin_44012721的博客 924
上一篇: 湖北师范大学-面向对象程序设计-Java面向对象 - 类与对象
下一篇: 湖北师范大学-Java面向对象-Java中的异常
汽水爆炸
博客等级 码龄4年 1903粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值