3.28学习总结

news/2024/4/28 19:30:47/文章来源:https://blog.csdn.net/2301_79390585/article/details/137092094

java

封装

封装体现了java的面向对象的特点,用户不用知道程序是如何运行的,只用按照所给的格式输入参数,便可得到对应的结果.

一个完整的封装需要每个实例变量都用private来修饰并拥有相应的public getter和setter方法.

代码

 public class girl {private int age;public static int gender;public girl() {}public girl(int age) {int t;if (age >= 18 && age <= 50)this.age = age;elseSystem.out.println("错误");}public void setAge(int x) {if (x >= 18 && x <= 50)age = x;elseSystem.out.println("错误");}public int getAge() {if (age == 0)System.out.println("请先赋值");elsereturn age;return 0;}}

继承

类的继承通过extends关键字来实现,继承的类被称为子类,被继承的类被称为父类,子类拥有父类的全部成员变量和方法.

格式为

修饰符 class SubClass extends SuperClass{//类定义部分
}
//修饰符 public等
//SubClass 子类名
//SuperClass 父类名

每个子类只有一个直接父类但可以有无数个间接父类(父类的父类).

子类可以重写父类的方法,重写之后只有在子类方法中才可以调用被覆盖的父类方法(其他地方调用的是子类方法).

class BaseClass{public void test(){...}               //父类方法
}
class SubClass extends BaseClass{public void test(){                   //重写父类方法super.test();                         //调用父类方法}
}

重写时要注意重写的方法要遵循一下规则:

1.方法名和参数不变

2.返回值类型要和父类方法一样或是父类返值类型的子类型.

3.重写方法的访问控制修饰符不能比被重写方法更严格(如果父类方法是public,则重写方法不能定义为private).


public class women {private int age;public static int gender;public int getAge() {                           //父类方法if (age == 0)System.out.println("请先赋值");elsereturn age;return 0;}}class girl extends women {public int getAge() {                           //重写父类方法System.out.println(super.getAge());return 0;}}

构造器

子类不会获得父类的构造器,但子类构造器里可以调用父类构造器.

子类通过super来调用父类的构造器,子类还可以通过this来调用本类的构造器,调用格式为

this(参数)    super(参数).


public class women {private int age;public static int gender;public women() {}public women(int age) {if (age >= 18 && age <= 50)this.age = age;elseSystem.out.println("错误");}
}class girl extends women {private int weight;public girl(int weight, int age) {super(age);this.weight = weight;}
}

多态

Java 引用变量有两个类型: 一个是编译时类型, 一个是运行时类型。 编译时类型由声明该变量时使 用的类型决定,运行时类型由实际赋给该变量的对象决定。 如果编译时类型和运行时类型不一致,就可 能出现所谓的多态 (Polymorphism).

多态的优势

当你需要对有着同一个父类的子类进行同一个操作的时候参数的设置就成了难题,你要对每一个子类都写一个方法供他们使用,但这样代码就会显得非常的臃肿,拥有着相同功能的代码出现了很多次,导致我们以后如果想修改功能我们就要对所有的方法进行修改,很麻烦,这时我们可以通过多态来解决.

多态的基本定义为 :   父类  变量名=new 子类();

子类其实是一种特殊的父类, 因此 Java 允许把一个子类对象直接赋给一个父类引用变量, 无须任何类型转换,或者被称为向上转型(upcasting) ,向上转型由系统自动完成。

public class person {private String name;private int age;public person() {}public person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void show(){System.out.println(name+","+age);}
}
public class student extends person {@Overridepublic void show() {System.out.println("学生的信息:"+getName()+","+getAge());}
}
public class administrator extends person{@Overridepublic void show() {System.out.println("管理员的信息:"+getName()+","+getAge());}
}
public class teacher extends person {@Overridepublic void show() {System.out.println("老师的信息:"+getName()+","+getAge());}
}

在以上这三个类中student,teacher和administrator都是person的子类,都分别重写了show方法(输出类中成员变量的值).

public class Main {public static void main(String[] args) {student a=new student();a.setAge(18);a.setName("张三");teacher b=new teacher();b.setAge(19);b.setName("李四");administrator c=new administrator();c.setAge(20);c.setName("王五");show(a);show(b);show(c);}public static void show(person p){p.show();}
}

运行结果

我们用父类来收这这三个子类的值就可以完成分别输出这三个类中成员变量的值.

多态中调用成员变量的特点

变量调用:编译看左边,运行看左边.

编译时会看父类中是否有这个变量,如果没有会报错.

运行时实际获取的是父类中成员变量的值

方法调用:编译看左边,运行看右边.

编译时会看父类中是否有这个方法,如果没有会报错.

运行时会运行子类的方法,实际上是父类中定义了该方法,子类覆盖了父类的该方法.

public class Main {public static void main(String[] args) {animal a=new dog();System.out.println(a.name);a.show();}
}
class animal{String name="动物";public void show(){System.out.println("animal");}}
class dog extends animal{String name="狗";public void show(){System.out.println("dog");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1027331.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自然语言处理(NLP)全面指南

自然语言处理&#xff08;NLP&#xff09;是人工智能领域中最热门的技术之一&#xff0c;它通过构建能够理解和生成人类语言的机器&#xff0c;正在不断推动技术的发展。本文将为您提供NLP的全面介绍&#xff0c;包括其定义、重要性、应用场景、工作原理以及面临的挑战和争议。…

制作一个RISC-V的操作系统七-UART初始化(UART NS16550A 规定 目标 发送数据 代码 extern)

文章目录 UARTNS16550A规定目标发送数据代码extern UART 对应到嵌入式开发中&#xff0c;qemu模拟的就是那块开发板&#xff08;硬件&#xff09; 电脑使用qemu时可以理解为qemu模拟了那块板子&#xff0c;同时那块板子与已经与你的电脑相连接了&#xff08;我们对应的指定的内…

【零基础C语言】编译和链接

1.翻译环境和运行环境 翻译环境&#xff1a;将源代码转化为可执行的机器指令 运行环境&#xff1a;用于执行机器指令 1.1 翻译环境 翻译环境由编译和链接两大过程构建&#xff0c;编译又可以分为三大过程&#xff1a; 【1】预处理(预编译) 【2】编译 【3】汇编 不同的.c文件经…

虚拟机-从头配置Ubuntu18.04(包括anaconda,cuda,cudnn,pycharm,ros,vscode)

最好先安装anaconda后cuda和cudnn&#xff0c;因为配置环境的时候可能conda会覆盖cuda的路径&#xff08;不确定这种说法对不对&#xff0c;这里只是给大家的建议&#xff09; 准备工作&#xff1a; 1.Ubuntu18.04&#xff0c;x86_64&#xff0c;amd64 虚拟机下载和虚拟机Ubu…

【氮化镓】位错对氮化镓(GaN)电子能量损失谱(EEL)的影响

本文献《Influence of dislocations on electron energy-loss spectra in gallium nitride》由C. J. Fall等人撰写&#xff0c;发表于2002年。研究团队通过第一性原理计算&#xff0c;探讨了位错对氮化镓&#xff08;GaN&#xff09;电子能量损失谱&#xff08;EEL&#xff09;…

探索 2024 年 Web 开发最佳前端框架

前端框架通过简化和结构化的网站开发过程改变了 Web 开发人员设计和实现用户界面的方法。随着 Web 应用程序变得越来越复杂&#xff0c;交互和动画功能越来越多&#xff0c;这是开发前端框架的初衷之一。 在网络的早期&#xff0c;网页相当简单。它们主要以静态 HTML 为特色&a…

ArcGIS Pro横向水平图例

终于知道ArcGIS Pro怎么调横向图例了&#xff01; 简单的像0一样 旋转&#xff0c;左转右转随便转 然后调整图例项间距就可以了&#xff0c;参数太多就随便试&#xff0c;总有一款适合你&#xff01; 要调整长度&#xff0c;就调整图例块的大小。完美&#xff01; 好不容易…

大型矿业集团安全知识竞赛主持词

男&#xff1a;尊敬的各位领导&#xff0c;员工同志们&#xff1a; 合&#xff1a;大家好&#xff01; 男&#xff1b;首先让我们以热烈的掌声对公司领导亲临比赛现场指导观看表示欢迎&#xff01; 男&#xff1b;继成功开展了荣辱观专题讲座、好矿嫂女红艺术展、安全谜语竞猜…

ArcGIS制作风向频率玫瑰图

风玫瑰图是气象科学专业统计图表,用来统计某个地区一段时期内风向、风速发生频率,又分为“风向玫瑰图”和“风速玫瑰图” ;因图形似玫瑰花朵,故名。风玫瑰图对于涉及城市规划、环保、风力发电等领域有着重要的意义。风玫瑰图能够直观的显现某地区不同方位风向的频率特征,进…

Python拆分PDF、Python合并PDF

WPS能拆分合并&#xff0c;但却是要输入编辑密码&#xff0c;我没有。故写了个脚本来做拆分&#xff0c;顺便附上合并的代码。 代码如下&#xff08;extract.py) #!/usr/bin/env python """PDF拆分脚本(需要Python3.10)Usage::$ python extract.py <pdf-fil…

TitanIDE与传统 IDE 比较

与传统IDE的比较 TitanIDE 和传统 IDE 属于不同时代的产物&#xff0c;在手工作坊时代&#xff0c;一切都是那么的自然&#xff0c;开发者习惯 Windows 或 MacOS 原生 IDE。不过&#xff0c;随着时代的变迁&#xff0c;软件行业已经步入云原生时代&#xff0c;TitanIDE 是顺应…

Switch 和 PS1 模拟器:3000+ 游戏随心玩 | 开源日报 No.174

Ryujinx/Ryujinx Stars: 26.1k License: MIT Ryujinx 是用 C# 编写的实验性任天堂 Switch 模拟器。 该项目旨在提供出色的准确性和性能、用户友好的界面以及稳定的构建。它已经通过了大约 4050 个测试&#xff0c;其中超过 4000 个可以启动并进入游戏&#xff0c;其中大约 340…

从小白-入门-进阶-高阶,四个阶段详细讲解单片机学习路线!

大家好&#xff0c;今天给大家介绍从小白-入门-进阶-高阶&#xff0c;四个阶段详细讲解单片机学习路线&#xff01;&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 单片机学习路…

第18次修改了可删除可持久保存的前端html备忘录

第17次修改了可删除可持久保存的前端html备忘录&#xff1a;增加年月日星期&#xff0c;增加倒计时&#xff0c;更改保存区名称可以多个备忘录保存不一样的信息&#xff0c;匹配背景主题&#xff1a;现代深色 <!DOCTYPE html> <html lang"zh"> <head&…

C语言例4-27:计算1+2+...+100之和(利用while语句实现)。

代码如下&#xff1a; //计算12...100之和&#xff08;利用while语句实现&#xff09;。 #include<stdio.h> int main(void) {int n1, sum0;while(n<100){ //复合语句作为当型循环结构的循环体sumsumn;n;}printf("sum %d\n",sum);retu…

Capture One Pro 22 for Mac/win:重塑RAW图像处理的艺术

在数字摄影的世界里&#xff0c;RAW图像处理软件无疑是摄影师们手中的魔法棒&#xff0c;而Capture One Pro 22无疑是这一领域的璀璨明星。这款专为Mac和Windows系统打造的图像处理软件&#xff0c;以其出色的性能、丰富的功能和极致的用户体验&#xff0c;赢得了全球摄影师的广…

ES6 学习(三)-- es特性

文章目录 1. Symbol1.1 使用Symbol 作为对象属性名1.2 使用Symbol 作为常量 2. Iterator 迭代器2.1 for...of循环2.2 原生默认具备Interator 接口的对象2.3 给对象添加Iterator 迭代器2.4 ... 解构赋值 3. Set 结构3.1 初识 Set3.2 Set 实例属性和方法3.3 遍历3.4 相关面试题 4…

代码学习记录29----贪心最后一天

随想录日记part29 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.03.28 主要内容&#xff1a;今天是学习贪心算法最后一天&#xff0c;接下来是针对题目的讲解&#xff1a;1.单调递增的数字;2.监控二叉树; 3. 总结 738.单调递增的数字 968.监控二叉树 总结 To…

【直播课】2024年PostgreSQL CM认证实战培训课程于4月27日开课!

课程介绍 了解关注开源技术&#xff0c;学习PG以点带面 Linux/Andriod&#xff08;操作系统&#xff09;、Apache/Tomcat&#xff08;应用服务器&#xff09;、OpenStack/KVM&#xff08;虚拟化&#xff09;、Docker/K8S&#xff08;容器化&#xff09;、Hadoop&#xff08;大…

通过WSL在阿里云上部署Vue项目

参考&#xff1a; 阿里云上搭建网站-CSDN博客 云服务器重装 关闭当前运行实例 更换操作系统&#xff0c;还有其他的进入方式。 选择ubuntu系统&#xff08;和WSL使用相同的系统&#xff09;。 设置用户和密码。发送短信验证码。 新系统更新。秒速干净的新系统设置完成。 这…