黑马程序员_多态与继承

------- android培训java培训、期待与您交流! ----------

1:多态

(1)对象在不同时刻表现出来的不同状态。

举例:水(冰,水,水蒸气)

(2)多态的前提

A:要有继承或者实现关系。

B:要有方法的重写。

C:要有父类引用或者父接口引用指向子类对象。

 

注意:多态有三种体现形式

类多态

抽象类多态

接口多态

(3)多态中的成员特点:

A:成员变量

编译看左边,运行看左边。

B:成员方法

编译看左边,运行看右边。

 

此特点是因为方法存在重写,而变量没有。

 

举例:孔子装爹。

孔子爹:讲课("JavaSE"),age=40

孔子:讲课("论语"),玩游戏(),age=20

 

//多态

孔子爹 k爹 = new 孔子(); //装爹,打扮的和爹一样。

System.out.println(k爹.age);//40

k爹.讲课(); //论语

//k爹.玩游戏(); //有问题

 

//讲了一天课,很累

孔子 k = (孔子)k爹; //去掉爹的装备

System.out.println(k.age);

k.讲课();

k.玩游戏();

 

 

(4)多态的弊端:

父类(接口)引用不能使用子类特有功能。

为了解决这个弊端,我们需要向下转型。

 

Fu f = new Zi(); //向上转型

Zi z = (Zi)f; //向下转型

 

Zi z = new Zi();

(5)多态的好处:

可以提高代码的扩展性和可维护性。

代码举例:

class Animal

{

public void show()

{

System.out.println("show Animal");

}

}

 

class Cat extends Animal

{

public void show()

{

System.out.println("show Cat");

}

 

public void playGame()

{

System.out.println("捉迷藏");

}

}

 

class Dog extends Animal

{

public void show()

{

System.out.println("show Dog");

}

}

class DuoTaiDemo4 

{

public static void main(String[] args) 

{

//多态

Animal a = new Dog(); //向上转型

a.show();

 

//给a重新赋值

a = new Cat(); //向上转型

a.show();

 

Cat c = (Cat)a; //向下转型

c.show();

c.playGame();

 

Dog d = (Dog)a;

d.show();

}

}

 

继承

(1)把多个类中的相同的属性和行为进行抽取,封装到一个类中,

   然后再建立新类的时候,不需要从头做起,继承刚才定义的那个类即可。

(2)好处:

A:提高代码的复用性。

B:让类与类之间产生了一个关系,是多态的前提。

(3)什么时候使用继承?

A:如果类之间存在着:

is a 的关系,就可以考虑使用继承。

B:不要为了继承部分功能,而去使用继承。

(4)继承的特点:

A:Java只支持单继承,不支持多继承。

为什么?如果支持多继承,就会有调用不明确的问题。

B:Java支持多层(重)继承。

(5)super和this的区别?

A:super是一个关键字,代表父类的存储空间标识。(可以理解为父亲的引用)

B:它和this的用法相似

a:成员变量

this.变量 -- 本类的

super.变量 -- 父类的

b:构造方法

this(...) -- 本类的

super(...) -- 父类的

c:成员方法

this.方法名() -- 本类的

super.方法名() -- 父类的

(6)子父类中成员变量的用法:

A:名称不同,这个太简单了。

B:名称相同,子类对象的在使用的时候:

先找子类局部范围

再找子类成员范围

最后找父类成员范围

(7)子父类中成员方法的用法:

A:名称不同。

B:名称相同,子类对象的在使用的时候:

先找子类的

再找父类的

C:方法重写

在子类中,方法声明(修饰符,返回值,方法名,参数列表)相同的情况。

 

注意事项:

a:父类中私有方法是不能被重写

b:子类方法的访问权限一定要大于等于父类的访问权限

(8)子父类中构造方法的用法:

A:子类的初始化过程中,首先回去执行父类的初始化动作。

   因为子类的构造方法中默认有一个super()。

为什么?子类要使用父类的成员变量,这个初始化,必须在子类初始化之前完成。

所以,子类的初始化过程中,会先执行父类的初始化。

B:如果父类没有无参构造方法

A:使用super调用父类的带参构造。推荐方式。

B:使用this调用本身的其他构造。

3:代码块

(1)执行顺序:

静态代码块 --> 构造代码块 --> 构造方法

(2)注意事项:

静态代码块只执行一次

 

4:final

(1)是一个关键字,可以用于修饰类,成员变量,成员方法。

(2)特点:

它修饰的类不能被继承。

它修饰的成员变量是一个常量。

它修饰的成员方法是不能被子类重写的。

 

代码举例:

class Person

{

public void show()

{

System.out.println("person");

}

}

 

/*

class School

{

public void show()

{

System.out.println("school");

}

}

*/

 

//class Student extends Person,School

class Student extends Person

{

public void method()

{

System.out.println("method");

}

}

 

class Coder extends Student

{

 

}

 

class ExtendsDemo2

{

public static void main(String[] args)

{

Person p = new Person();

p.show();

System.out.println("------");

 

Student s = new Student();

s.show();

s.method();

System.out.println("------");

 

Coder c = new Coder();

c.show();

c.method();

}

}

------- android培训java培训、期待与您交流! ----------

标题基于SpringBoot+Vue的学生交流互助平台研究AI更换标题第1章引言介绍学生交流互助平台的研究背景、意义、现状、方法创新点。1.1研究背景意义分析学生交流互助平台在当前教育环境下的需求及其重要性。1.2国内外研究现状综述国内外在学生交流互助平台方面的研究进展实践应用。1.3研究方法创新点概述本研究采用的方法论、技术路线及预期的创新成果。第2章相关理论阐述SpringBootVue框架的理论基础及在学生交流互助平台中的应用。2.1SpringBoot框架概述介绍SpringBoot框架的核心思想、特点及优势。2.2Vue框架概述阐述Vue框架的基本原理、组件化开发思想及前端的交互机制。2.3SpringBootVue的整合应用探讨SpringBootVue在学生交流互助平台中的整合方式及优势。第3章平台需求分析深入分析学生交流互助平台的功能需求、非功能需求及用户体验要求。3.1功能需求分析详细阐述平台的各项功能需求,如用户管理、信息交流、互助学习等。3.2非功能需求分析对平台的性能、安全性、可扩展性等非功能需求进行分析。3.3用户体验要求从用户角度出发,提出平台在易用性、美观性等方面的要求。第4章平台设计实现具体描述学生交流互助平台的架构设计、功能实现及前后端交互细节。4.1平台架构设计给出平台的整体架构设计,包括前后端分离、微服务架构等思想的应用。4.2功能模块实现详细阐述各个功能模块的实现过程,如用户登录注册、信息发布查看、在线交流等。4.3前后端交互细节介绍前后端数据交互的方式、接口设计及数据传输过程中的安全问题。第5章平台测试优化对平台进行全面的测试,发现并解决潜在问题,同时进行优化以提高性能。5.1测试环境方案介绍测试环境的搭建及所采用的测试方案,包括单元测试、集成测试等。5.2测试结果分析对测试结果进行详细分析,找出问题的根源并
内容概要:本文详细介绍了一个基于灰狼优化算法(GWO)优化的卷积双向长短期记忆神经网络(CNN-BiLSTM)融合注意力机制的多变量多步时间序列预测项目。该项目旨在解决传统时序预测方法难以捕捉非线性、复杂时序依赖关系的问题,通过融合CNN的空间特征提取、BiLSTM的时序建模能力及注意力机制的动态权重调节能力,实现对多变量多步时间序列的精准预测。项目不仅涵盖了数据预处理、模型构建训练、性能评估,还包括了GUI界面的设计实现。此外,文章还讨论了模型的部署、应用领域及其未来改进方向。 适合人群:具备一定编程基础,特别是对深度学习、时间序列预测及优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①用于智能电网负荷预测、金融市场多资产价格预测、环境气象多参数预报、智能制造设备状态监测预测维护、交通流量预测智慧交通管理、医疗健康多指标预测等领域;②提升多变量多步时间序列预测精度,优化资源调度和风险管控;③实现自动化超参数优化,降低人工调参成本,提高模型训练效率;④增强模型对复杂时序数据特征的学习能力,促进智能决策支持应用。 阅读建议:此资源不仅提供了详细的代码实现和模型架构解析,还深入探讨了模型优化和实际应用中的挑战解决方案。因此,在学习过程中,建议结合理论实践,逐步理解各个模块的功能和实现细节,并尝试在自己的项目中应用这些技术和方法。同时,注意数据预处理的重要性,合理设置模型参数网络结构,控制多步预测误差传播,防范过拟合,规划计算资源训练时间,关注模型的可解释性和透明度,以及持续更新迭代模型,以适应数据分布的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值