对象必须实现 iconvertible。_java面向对象最全入门笔记(通俗易懂,适合初学者)...

前言:面向对象的三大特征封装 (Encapsulation)继承 (Inheritance)多态 (Polymorphism)编程思想
面向过程:做某件事情都需要自己亲历亲为,按照步骤去完成
面向对象:做某件事情不需要自己亲历亲为,只需指定特定的对象去完成即可。1.现实世界就是由对象组成的,如下图,万物皆对象(不是单指女朋友也不是单指男朋友哈~)

18f98e8b8b1a0314133a7c57540cf0c7.png

2.面向对象设计和开发程序的好处
1.交流更加流畅
2.提高设计和开发效率
3.面向对象的思想符合人类思维习惯
二、对象和封装1.类和对象的概念
1,类是对某一事物的描述,是抽象的,概念上的定义。
2,对象是实际存在的该事物的个体,是具体的、现实的。2.成员变量和局部变量的区别成员变量:定义在类中,有初始值局部变量:定义在方法中,无初始值3.方法的重载:OrverLoad
两同三不同
1,在同一个类中,同一个方法名
2,参数列表不同(个数不同,顺序不同,类型不同)
方法的重载跟返回值无关4.静态变量(类变量)相当于全局变量
用static修饰的变量叫静态变量也叫类变量
用static修饰的方法叫静态方法也叫类方法
修饰代码块叫静态块(先于main之前调用,先块后main)
可以直接通过类名直接调用 也可以 用对象调用,但是推荐类名调用
静态方法中只能调用静态变量
非静态方法中不能定义静态变量

0c9245d619e8fb530aa3392f4db710f3.png

5.构造方法:方法名和类名相同,没有返回值类型,
每一个类都会有一个默认的无参构造方法
当写了一个有参构造,默认无参构造就会消失
构造方法的作用:
1,实例化对象
2,给成员变量赋值
构造方法包含无参构造和有参构造
三、封装和继承1.封装的概念
将类的某些信息隐藏在类内部,不允许外部程序直接访问,
而是通过该类提供的方法来实现对隐藏信息的操作和访问。
封装的好处:
1,隐藏类的实现细节
2,方便加入控制语句
3,方便修改实现
4,只能通过规定方法访问数据2.继承:extends
继承是子类对父类的拓展,延伸
继承的特点:
1,关键字 extends
2,java类没有多继承,只有单继承,但是可以多重继承
3,不能继承父类的三种情况 private成员、构造方法、子类与父类不在同包,使用默认访问权限的成员
4,java中所有的类的祖先都是Object类
5,不同的叫法 父类:基类,超类 子类:派生类

f01893ccec1d3277ec016adfb9784726.png

3.super: 对父类对象的引用
super(name):表示调用了父类的的有参构造方法。调用父类的构造方法,必须写在构造方法中的第一行
还可以使用super关键字直接调用父类的方法,如 super.print();(后面的学习还会具体讲)4.final 最终的
1,修饰变量、常量, 值不可改变
2,修饰方法, 不能被重写
3,修饰类, 不能被继承5.方法的重写
重写的特点:方法名 参数列表 返回值类型 必须和父类方法一致
访问权限不能比父类的更严格
@Override //注解 规定它下面的方法必须是重写的方法

4b2af7244ac8dabb7a366422d07ca47c.png

6.总结:

d72de36268ccda4651f1ba7a3353ded2.png


四、抽象和多态1.抽象(abstract)
1,意义:抽象类是一种不完全规范,规定子类必须具备哪些方法
2,特点: 抽象类中可以有普通属性和普通方法
抽象类中有构造方法,但是不能实例化
抽象类只能被继承
抽象方法只能被子类重写或者子类继续抽象
有抽象方法的类必须是抽象类
抽象类中不一定有抽象方法2.多态什么是多态生活中的多态:不同类型的打印机打印效果不同 如下图:

81aa2ffb2ce6985d9c95a02647624f02.png

程序中的多态:
一个对象在不同的载体中呈现不同的形态。
同一个引用类型,调用同一个方法,得到不同的结果。1,形参多态的必要条件
1,要有继承关系
2,要有方法的重写
3,父类的引用指向子类的对象,2,用途:可以减少类中的代码量
可以提高代码的可拓展性和可维护性
继承是多态的基础,没有继承就没有多态3,使用父类作为方法形参和使用父类作为返回值类型是使用多态的常用方式。3.转型
1,向上转型:把子类转换为父类,属于自动类型转换。
2,向下转型:把父类转换为子类,必须强制类型转换。
注意:
1,向上转型后通过父类引用变量调用的方法是子类覆盖或继承父类的方法,
通过父类引用变量无法调用子类特有的方法。
2,向下转型后可以访问子类特有的方法,必须转换为父类指向的真实子类类型,
否则将出现转换异常(ClassCastException)。4.instanceof:运算符用于判断一个对象是否属于一个类或实现一个接口。
instanceof:运算符通常和强制类型转换结合使用,先通过instanceof进行类型判断,
再进行相应的强制类型转换。4.总结

2e893c94baf5de97af5c4c652fa00fb5.png


五、接口1,接口的定义(interface)
是一种强制性(完全)的规范。 接口不是一个类,
定义一系列的属性(静态常量)和行为(抽象方法)2,接口的特征:
1.不能被实例化,接口没有构造方法
2.接口只能被实现implements 或者继续定义为接口
3.接口中的属性默认是 public static fianl 修饰的静态常量
4.接口中的方法默认是 public abstract 修饰的抽象方法
5. 只能有抽象方法
6. 接口中的方法必须被子类重写
7…一个类实现多个接口用逗号隔开
public class Man implements IPerson,Program
8.如果一个类有继承又有实现,那么是先继承再实现
9.接口可以继承多个接口,用逗号隔开!3,类和类的关系 继承关系
类和接口的关系 实现关系 一个类可以实现多个接口()
接口和接口的关系 继承关系 可以继承多个接口4,类只能继承一个父类,但可以实现多个接口,一个类如果实现了一个接口,则必须 实现接口中的全部方法,否则必须将其定义为抽象类。
Java通过实现接口达到了多重继承的效果。5,接口表示一种约定,接口表示一种能力,接口体现了约定和实现相分离的原则。6,抽象类利于代码复用,接口利于代码维护。7.面向接口编程
1,通过面向接口编程,可以降低代码间的耦合性,提高代码的可拓展性和可维护性。
2,面向接口编程意味着:开发系统时,主体构架使用接口,接口构成系统的骨架,这样就可以 通过更换实现接口的类来实现更换系统。8.接口有比抽象类更好的特性:
1,可以被多继承
2,设计和实现完全分离
3,更自然的使用多态
4,更容易搭建程序框架
5,更容易更换实现9.接口和抽象类的区别:
1,接口不是类,抽象是是一个类
2,接口没有构造方法,抽象类有构造方法 ,都不可以实例化
3,接口只能被实现 ,抽象类只能被继承
4,接口中只能有公共的静态常量和公共的抽象方法,抽象类中可以有普通的属性和方法
5,接口可以多实现(多继承),抽象类只能单继承10.总结

2e893c94baf5de97af5c4c652fa00fb5.png


六、异常(exception):1,什么是异常?
在程序运行过程中,发生了不可预料的错误,导致程序终止。2,异常的五个关键字:try、catch、finally、throw、throws

92952cbff9f79a7aed53bc36a7fec864.png

3,异常的格式
try{}catch(){}
try{}finally{}
try{}catch(){}finally{}
catch()块可以有多个,但是catch块捕捉有顺序 先子类后父类4,try代码块中 表示 可能出现异常代码块,catch代码中 捕捉到异常之后的处理。finally 表示不管有没有异常都会执行的代码块5,finally块中语句不被执行的唯一情况:在异常处理代码中执行System.exit(1)。6,throw表示抛出异常
throws 表示声明异常 告诉调用者这个方法有异常,谁调用谁处理7,throw和throws的区别
1.作用不同:throw用于在程序中抛出异常。throws用于声明在该方法内抛出了异常
2.使用的位置不同:throw位于方法体内部,可以作为单独语句使用。throws必须跟在
方法参数列表的后面,不能单独使用。
3.内容不同:throw抛出一个异常对象,而且只能是一个。throws后面跟异常类,而且
可以跟多个异常类。
七、集合框架
在我的另一篇博文里有详细介绍,下面是链接:
集合框架
八、多线程1.进程: 在内存中开辟了一块空间,供程序运行。一个进程表示一个程序的运行。
一个程序可以开多个进程。2.线程:是程序运行中最小的单位。一个进程可以有多个线程,但至少有一个线程。
进程中执行运算的最小单位,可完成一个独立的顺序控制流程3.实现多线程的两种方式
1,写一个类 继承Thread
重写run();方法
通过start();启动线程
如果调用run方法,那么就只有一个main线程
2,实现 Runable接口
重写run();方法
通过代理模式运行start();启动线程4.设置线程运行的优先级1-10 :setPriority(10) Thread.MAX_PRIORITY Thread.MIN_PRIORITY
优先级高的线程会获得更多的运行机会。5.synchronized:同步锁 :当多个线程对象操纵同一资源时,要使用synchronized关键字来进行资源的
的同步处理,可以使用同步方法和同步代码块来实现。6.StringBuffer 线程安全 效率低
StringBuilder 线程不安全 效率高
HashTable 线程安全 效率低
HashMap 线程不安全 效率高7.线程睡眠:sleep()方法使线程转到阻塞状态8.线程强制运行:join()方法使当前线程暂停执行,等待调用该方法的线程结束后再继续执行本线程。9.线程礼让:yield()方法、暂停当前正在执行的线程对象,把执行机会让给相同的或者更高优先级的线程。
九、File和IO流1、File:

94415fc2f17ea05141ad2ba35be1286f.png

2.File类常用的方法

a8e2e2e13110e4d75414854c3b9707c3.png

3.以下是代码演示:
package jbit.io;
import java.io.*;
public class FileMethods {
public static void main(String[] args) {
FileMethods2 fm=new FileMethods2();
File file=null;
file=new File("D:myDoctest.txt");
//fm.create(file);
fm.showFileInfo(file);
//fm.delete(file);
}
/**
* 创建文件的方法
* @param file 文件对象
*/
public void create(File file){
if(!file.exists()){
try {
file.createNewFile();
System.out.println("文件已创建!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 删除文件
* @param file 文件对象
*/
public void delete(File file){
if(file.exists()){
file.delete();
System.out.println("文件已删除!");
}
}
/**
* 显示文件信息
* @param file 文件对象
*/
public void showFileInfo(File file){
if(file.exists()){ //判断文件是否存在
if(file.isFile()){ //如果是文件
System.out.println("名称:" + file .getName());
System.out.println("相对路径: " + file.getPath());
System.out.println("绝对路径: " + file.getAbsolutePath());
System.out.println("文件大小:" + file.length()+ " 字节");
}
if(file.isDirectory()){
System.out.println("此文件是目录");
}
}else
System.out.println("文件不存在");
}
}
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455564.java流的分类

02f6f278b1f005c3412de42e2af5456a.png

5.文本文件的读写
用FileInputStream和FileOutputStream读写文本文件
用BufferedReader和BufferedWriter读写文本文件6.二进制文件的读写
使用DataInputStream和DataOutputStream读写二进制文件7.InputStream类常用方法
int read( )
int read(byte[] b)
int read(byte[] b,int off,int len)
void close( )
int available()
子类FileInputStream常用的构造方法
FileInputStream(File file)
FileInputStream(String name)8.OutputStream类常用方法
void write(int c)
void write(byte[] buf)
void write(byte[] b,int off,int len)
void close( )
子类FileOutputStream常用的构造方法
FileOutputStream (File file)
FileOutputStream(String name)
FileOutputStream(String name,boolean append)9.Writer类常用方法
write(String str)
write(String str,int off,int len)
void close()
void flush()
子类BufferedWriter常用的构造方法
BufferedReader(Writer out)10.总结

2884aa8f62436f33c7dc9d7badd608ce.png

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

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

相关文章

HH SaaS电商系统的结算系统设计

文章目录一、第三方卖家销售货款结算流程说明:销售货款结算逻辑流程图预期收入如何统计二、第三方卖家推广分销佣金结算佣金结算逻辑流程图逾期佣金收入如何统计三、采购货款结算租户采购货款结算流程说明商城采购货款结算流程说明店铺商家的采购货款结算流程说明四…

postgresql删除索引_PostgreSQL 13 发布,索引和查找有重大改进

9月24日,PostgreSQL全球开发组宣布PostgreSQL 13正式发布,作为世界上使用最多的开源数据库之一,PostgresSQL 13是目前的最新版本。PostgreSQL 13 在索引和查找方面进行了重大改进,有利于大型数据库系统,改进包括索引的…

【WebRTC---源码篇】(十六)WebRTC/NetEQ

WebRTC【4096版本】 NetEQ的作用 进行抖动控制和丢包隐藏,通过该技术可以让音频更平滑 NetEQ插入packet数据 int NetEqImpl::InsertPacketInternal(const RTPHeader& rtp_header,rtc::ArrayView<const uint8_t> payload) {//如果有效荷载payload为空if (paylo…

HH SaaS电商系统的销售订单设计

文章目录订单销售类型订单优惠优惠方式子订单优惠金额订单拆单订单发货销售订单拆单逻辑图销售订单的信息结构相关实体订单运营类型&#xff08;作废&#xff09;售后截止时间订单状态状态机的设计不同属性组合下的订单状态组合1&#xff1a;实物线上非预售非定制非拼单快递组合…

kafka netty_惠而浦:使用Netty和Kafka的微服务

kafka netty介绍 在上一个博客中 &#xff0c;我介绍了Netty用作Web服务器。 该示例运行良好……只要需要广播服务器即可。 大多数情况下不是很有用。 更有可能的是&#xff0c;每个客户端仅接收针对其的数据&#xff0c;并保留了特殊情况下的广播&#xff0c;例如“服务器在1…

HH SaaS电商系统的拼团系统设计

文章目录拼团业务流程拼团单实体拼团单的状态拼团型订单的销售状态注意点拼团业务流程 创建活动 管理后台创建拼团活动&#xff0c;设置好活动有效期、成团人数、成团时效、限购数量、活动对象、添加活动商品&#xff0c;设置团长价和团员价&#xff0c;活动开始后活动对象在买…

统信uos系统考试题_离Windows更近一步!微信Linux原生版上线:国产统信UOS系统已适配...

就在本月11号&#xff0c;国产操作系统-统信 UOS发布了专业版 V20(1030)&#xff0c;功能更强大&#xff0c;同时性能和安全性均有所提升。而距离这个好消息过去没多久&#xff0c;统信软件官方再次发布了一个好消息&#xff1a;那就是微信桌面客户端(统信 UOS 版)研发完成&…

npm 引用子项目模块_Java / Web项目中的NPM模块Browser-Sync

npm 引用子项目模块Browser-Sync是一个方便的基于Node.js的NPM模块&#xff0c;可用于更快的Web开发。 浏览器同步可在许多设备之间同步文件更改和交互。 最重要的功能是实时重新加载。 我们也可以在Java / Web项目中使用Browser-Sync。 Cagatay Civici创造了一个伟大的 视频教…

xrd精修教程_XRD精修系列干货 | 带你领略晶体之美

1. XRD精修教程(一)——XRD精修基本原理与GSAS软件简介(附GSAS软件下载链接)点击上图即可查看全文X射线衍射分析(XRD)在研究材料的相结构、相成分等多个方面有广泛的应用&#xff0c;但最常用的多晶衍射法有个缺点&#xff1a;得到的谱峰重叠严重&#xff0c;从而造成大量材料结…

多个cpp文件生成so_C++:C++的文件搜索路径

在做大型工程的时候&#xff0c;除了有C语法知识之外&#xff0c;还要有工程能力。最先要具备的能力是&#xff1a;理解C文件的编译&#xff0c;链接过程。明白C头文件的搜索路径。本文&#xff0c;介绍C的文件搜索路径。对于C文件来说&#xff0c;主要有两种&#xff0c;一种是…

HH SaaS电商系统的店铺系统设计

文章目录为什么店铺运营模式要区分B2C、C2C、O2O&#xff1f;O2O店铺B2C店铺自营B2C店铺第三方B2C店铺C2C店铺为什么O2O店铺不允许售卖快递类的商品&#xff1f;B2C、C2C模式的自提和O2O的自提有什么区别&#xff1f;B2C、C2C模式的配送和O2O的配送有什么区别&#xff1f;为什么…

监听js变量的变化_JS监听事件型爬虫

点击上方“Python数据科学”&#xff0c;选择“星标公众号”关键时刻&#xff0c;第一时间送达&#xff01;作者&#xff1a;zuobangbang来源&#xff1a;zuobangbang最近开始研究网页参数的JS加密&#xff0c;但是大型网站的JS文件过于繁杂&#xff0c;不适合新手上路&#xf…

HH SaaS电商系统的支付模块设计

文章目录支付单支付单状态流转逻辑说明支付相关实体支付流水记录支付方式支付渠道支付单 销售订单生成时&#xff0c;同步生成支付单&#xff0c;如果销售订单的应付金额由首付款和尾款组成&#xff0c;那么会生成两个支付单 支付单与销售订单的“联合单号”或者“退款单ID”关…

添加几个手机联系人_One UI 3.0: 更细腻、更好用,这才是手机系统该有的样子

作为全球出货量最多的 Android 手机厂商&#xff0c;三星宣布将于北京时间 1 月 14 日正式召开 2021 年度的新品发布会。伴随着 S21 的即将发售&#xff0c;我想借此机会和大家一起来聊一聊前不久刚刚推送正式版本的 One UI 3.0。One UI 3.0 是三星基于 Android 11.0 打造的新一…

HH SaaS电商系统的商城模块设计

文章目录好获SaaS电商系统层级关系商城实体商城运营模式商城可选子系统创建商城商城管理后台有供应系统和无供应系统的B2C和混合模式的商城系统对比有仓储系统和无仓储系统的B2C和混合模式的商城系统对比有店铺系统和没有店铺系统的商城系统对比商城关闭商家入驻通道B2C模式商城…

HH SaaS电商系统的物流单设计

业务说明 物流信息提交后&#xff0c;系统生成物流单&#xff0c;出库单与物流单是一对多的关系 退货时买家填写物流信息&#xff0c;提交后系统生成物流单和入库单&#xff0c;物流单需要保存入库单的id 物流单实体

pcl_openmap_OpenMap教程5 – 3层GIS应用程序

pcl_openmap1.简介 欢迎使用OpenMap系列教程的第5个教程。 OpenMap是一个免费的开源Java GIS库。 这是以前的教程列表&#xff1a; 在第一个教程中&#xff0c;我们创建了一个基本的OpenMap GIS应用程序&#xff0c;该应用程序在JFrame中显示一个从文件系统加载的具有一个形状…

HH SaaS电商系统的商品系统设计

文章目录商品信息结构商品信息总结构商品信息结构图发布商品商品类型虚拟商品服务商品为什么服务商品要分类前端根据服务商品类型来设计不同的界面和交互订单状态和服务类型有关商品档案上下架运营商品上下架&#xff08;即商品营销上下架&#xff09;删除商品租户删除自供商品…

HH SaaS电商系统移动端商城,买家选择商品规格的交互设计

文章目录未完整选择商品规格时商品图如何显示库存如何显示价格如何显示选择规格提示文案如何显示原型图已选完整选择商品规格时商品图如何显示库存如何显示价格如何显示原型图SKU下架后如何显示原型图购买数量如何交互未完整选择商品规格时 商品图如何显示 显示SPU的主图&…

aws lambda_适用于无服务器Java开发人员的AWS Lambda:它为您提供了什么?

aws lambda无服务器计算如何帮助您的生产基础架构&#xff1f; 在过去的几年中&#xff0c;无服务器计算架构一直受到关注&#xff0c;因为它专注于应用程序的主要组件之一&#xff1a;服务器。 这种体系结构采用了不同的方法。 在下面的文章中&#xff0c;我们将解释无服务器…