JAVA 面向对象
1;什么叫面向对象:1;面向对象和面向过程是一种思想
2;面向过程:强调的是功能行为
3;面向对象:将功能进行封装,强调具备了功能的对象
2;面向对象的特征:1;封装 2;继承 3;多态
3;面向对象的特点:可以将复杂的事情简单化
将程序员从执行者变为指挥者
4;类:生活中一般描述事物的行为和属性
JAVA中用类来描述事物:
1;属性:对应类中的成员变量
2;行为:对应类中的方法
类是对生活的一种描述
对象是对生活中事物的描述,实实在在的个体
在JAVA中通过new操作符来完成
例如:Car car=new Car();
//其实就是在堆内存产生的实体
//Car就是一个类类型变量,类类型变量指向对象
Car.run();
Car car2=new Car();
5;信息隐藏:private----私有:可用与修饰成员变量和成员方法,只能在本类中有效
6;封装:1;通过数据封装,声明为私有
2;提供一个或多个公开的(public)的方法
7;封装的好处:1;隐藏了一个类的实现细节
2;方便控制:限制对属性的不合理操作
3;便于修改:增加代码的可维护性
8;实例变量和局部变量
实例变量==成员变量
1;1,成员变量定义在类中
2,局部变量定义在方法中,参数上,语句中
2;成员变量在类中有效
局部变量只在所属的大括号内生效,出了则无效
3;成员变量存在工作中,随着对象的消失而消失
局部变量存在于栈中,随着所属区别的运行而存在,结束而释放
9;构造函数:
1;构造函数没有返回值
2;构造函数的函数名和类名相同
3;给对象初始化数据
注意:一个类在定义时,如果定义构造函数时,已有,则就没有默认的构造函数
10;构造函数和一般函数的区别
1;格式不同(函数名,返回类型,返回值)
2;构造函数在对象创建时,就被调用,只调用一次;
一般函数在对象创建后,才被调用,可被调用多次
注意:创建一个对象在内存中做了什么事情:
1;先将Person.class文件加载到内存中
2;执行main()方法,在栈中开辟空间,然后main方法的栈区分配一个变量Person
3;在堆中开辟一个实体空间,分配了内存地址(new)
4;在该实体空间中进行属性空间分配,并进行默认初始化
5;调用该实体的构造函数,进行构造函数初始化
6;将内存中的地址调用在方法的参数,进行传值
11;This 关键字
1;this:代表对象,就是所在函数所属对象的引用
2;什么时候同this?
答:在定义功能时,如果该功能内部使用到了调用该功能的对象,这时就用this来表示对象
3;调用格式:this,this对象后面跟.调用的是成员属性和方法
this对象后面跟()调用的是本类中的构造方法
注意:this调用函数,必须定义在构造函数的第一行
因为构造函数是用于初始化,所以初始化动作一定会执行,否则编译错误
static 关键字:是一个修饰符,用于修饰成员(成员变量和成员方法)
特点:
1;想要实现对象的中共性数据的对象共享,可以将这个数据进行静态修饰
2;被修饰的成员,可以被类名所调用.类名.静态成员
3;静态随着类的加载而加载,而且优先于对象的存在
弊端:
1;有些数据对象是特有的数据,是不可以被静态修饰,如果修饰这样的数据,那这个数据会变成共享数据,对事物描述就出了问题
2;静态的方法,只有访问静态成员,不能访问非静态的成员
3;静态的方法中,不能使用this和super关键字
12;静态变量和成员变量的区别
1;静态变量所属于类,也称为类变量
2;成员变量所属于对象,也称为实例变量
静态变量存在于方法区
成员变量存在于堆中
静态变量随着类的加载而存在,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象回收而消失
静态变量可以被对象和类名调用
结论:成员变量可以称为对象的特有数据
静态变量可以称为对象的共享数据
静态代码块:
static{
System.out.print();
}
toString(){
return "student[id="+id+",name="+name+"]"
}
作用:1;可以完成类的初始化,静态代码块随着类的加载而执行,而且只执行一次(new 多个对象,只执行一次)
2;如果和主函数在同一个类中,优先主函数执行
13;设计模式:1;创建型模式
2;结构型模式
3;行为型模式
单例模式:保证一个类在内存中的对象唯一性
如何保证对象的唯一性?
1;不让其他程序创建该类对象
2;本类中创建一个本类对象
3;对外提供方法,让其他程序获得这个对象
步骤:
1;因为创建对象都需要构造函数初始化,只有将本类中的构造函数私有化,其他程序就无法创建该类对象
2;在本类创建一个对象
1;private Single(){
}
private static Single s=new Single();
public static Single GetInstance(){
}
2;private Single(){
}
public static Single2 s=null;
private static Single2 GetInstance(){
if(s==null){
s=new Single2();
}
return s;
}
14;继承:-----Animal extends Object
继承的好处:提高代码的复用性
父类由来:其实由多个类不断向上提取的共性内容而来
实现继承的类为子类,被继承的是父类(基类)
语法格式:修饰符 class 子类名 extends 父类名
extends 是继承的关键字,是扩展的意思
方法重写:三同一小一大
三同:方法名,形参列表相同,返回值相同
一小:子类方法声明抛出的异常类应该比父类方法的声明抛出的异常类更小或相同
一大:子类方法的访问权限应该比父类方法的权限更大或相同
15;super关键字:子类出现后,类中的成员有了哪些特点?
1;成员变量:当子类出现一样属性的时候,子类类型的对象调用该属性,值是子类的属性值
System.out.println(this.birName+"只在地上跑");
System.out.println(super.birName+"只在地上跑");
this:代表本类类型的对象引用
super:代表子类所属父类中的内存空间引用
如果想要调用父类的属性,需要super这个关键字
2;构造函数:发现子类的构造函数运行时,先运行了父类的构造函数
子类的所有构造函数中的第一行,其实都有一条隐身的语句super();
3;成员函数:当子类父类出现了一样的方法时,子类对象会运行子类的方法,父类的方法会被覆盖(重写)
如果需要调用父类的方法,需要super.bird();
JAVA中类只允许单一继承
多重继承:A继承B,B继承C,C继承D
16;方法重载:1;什么叫做重载:用于定义一组方法,这些方法具有相同的名称,执行类式的操作,但是却使用不同的方法、
2;重载的三大原则:方法名相同
参数不同:数量不同,类型不同,顺序不同
同一作用域
提示:方法重载与返回值类型没有任何关系
1;成员方法重载
2;构造函数重载
17;final 关键字
final 修饰成员属性,这个属性就变为常量,不可变,必须赋初始值
final 修饰方法,这个方法不能重写
final 修饰类,这个类不能被继承,该类中的所有方法和属性都是final
18;类之间的关系:依赖(use-a) 继承(is-a) 聚合(has-a)
19;抽象类:抽象类不能被实例化
抽象方法:只需声明,不需实现
抽象关键字:abstract
如果这个方法是一个抽象方法,那么这个类一定是抽象类
抽象类可以包含普通成员(变量和方法)
子类必须重写父类的抽象方法,如果不重写那么这个类也是抽象类
抽象类有构造函数,用与初始化
抽象类abstract关键字与哪些不能共享:private final static
抽象类中不一定包含抽象方法
20;abstract 特点:
1;抽象方法只能定义在抽象类,抽象类和抽象方法必须由abstract关键字修饰(方法,类,不能修饰变量)
2;抽象方法只定义方法声明,并不定义方法实践(只有方法名,没有方法体)
3;抽象类不能被实例(不能创建对象)
4;子类继承抽象类,必须重写父类的抽象方法,如果没有重写,那也是一个抽象类,如果不是抽象类,那么编译不通过
5;abstract关键字不能和final,private,static
附件:ctrl+shift+r-----查找文件
ctrl+t-----查看类结构
ctrl+单击------找到文件
ctrl+c-----复制
接口:是抽象方法和常量值的定义的集合
interface 关键字
DAO------数据访问对象的第一个接口
接口里面只能包含静态常量,不能包含普通的变量
修饰符必须是public
接口里面的方法都是抽象方法(只有方法名,没有方法体,而且abstract关键字可以省略),不能包含普通方法
实现类必须重写接口的抽象方法
继承------extends 实现------implements
一个类实现多个接口,一个接口可以继承多个接口
一个类在继承另一个类的同时,还可以实现多个接口
接口用于设计上,特点:
1;接口是对外提供的规则
2;接口是功能的扩展
3;接口的出现降低了耦合性
21;多态:同一函数,多种形态
<对象 instanceof 类型>
什么叫做多态:同一函数,多种形态
函数本身就是具备多态性,某一中事情有不同的具体的体现
多态的前提:1;必须要有关系(继承和实现)
2;会有方法覆盖(重写)
体现:父类引用或者接口的引用,指向自己的子类对象
好处:提高程序的扩展性
弊端:当父类引用指向子类对象时,但是只能访问父类的方法,不能访问子类中特有的方法
22;异常:程序中出现的错误
1;编译时异常
2;运行时异常
运行时异常包括:运行错误,逻辑错误
try{-----------} 监视可以发生异常的代码部分
catch(异常类型 e){-----------}
1;Exception:异常层次结构的根类
2;ArithmeticException:算术异常
3;ArrayIndexOutofBoundException:数组下标越界
4;NullPointerException:访问空引用
5;NumberFormatException:字符串转换数字失败
6;IOException:IO异常的根类
finally 不论是否发生异常,都会执行
不论有多少个catch,都会执行一个
throw new Exception("------------");
e.getMessage();
运行时异常,不需要强制 try{-----}catch(异常类型 e){------}
转载于:https://blog.51cto.com/10291529/1659531
相关文章:
Android studio Day02-1
AndroidDay02-1(project) 新建一个project,并选择一个自己project的存贮的位置 Android studio 2.3.1默认的最小的API为15 第一次使用并建立自己的project,软件进行相应的sdk其他的组建的安装 点击next进入下一个界面,…

Unity Pro builder创建模块化仓库建筑学习教程
Unity内部的专业3D编辑工作室 你会学到: 直接在Unity内部学习3D建模 使用专业构建器的专业方法 为您的游戏创建模块化资产 了解如何为您的三维模型设置纹理 三维资产的模块化布局 专业后期制作和轻烤 Unity Pro Builder Warehouse MP4 |视频:h264,1280720 |音频:AA…

C++拾遗(五)语句相关
前缀格式与后缀格式 对于表达式:后缀如 i 表达式的值仍是 i,在遇到下一个顺序点后再将 i 加1。前缀 i 表达式的值就是(i1),先计算表达式的值,不需要等待 顺序点。 对于类:前缀函数效…

github里的默认域_GitMAD 一款扫描Github上的敏感信息和数据泄漏工具
GitMAD是一个用于发现Github上的敏感信息和数据泄漏的工具。通过给定关键字或域,GitMAD便会搜索Github上托管的代码,以查找是否存在匹配项。一旦找到了匹配项,GitMAD将克隆存储库并在文件中搜索一系列可配置的正则表达式。然后,Gi…

【Docker】Docker的三大核心组件
镜像(Image)、容器(Container)、仓库(Repository)是我们常说的Docker的三大组件,接下来就让我们一起详细地探索一番吧。 一、镜像(Image) 什么是Docker镜像?…

很高兴开始博客之旅
来到博客园!,开启我的博客之旅,感觉棒棒哒转载于:https://www.cnblogs.com/pbnull/p/4562230.html
Android Studio Day02-2
AndroidDay02-2(AVD) Android APP编译的过程之中总是会需要进行相应的功能的调试,以及界面的布局设置在不同手机上的效果的展示。相应的Android平台都包含有Android虚拟设备管理器,Android虚拟设备管理器允许用户自己创建自己的虚…

网络增强现实开发简介 Introduction to Web AR development
搭配webXR、mindAR、three.js和tensorflow.js 你会学到: 获得构建不同类型的网络增强现实应用程序的实践经验,包括图像效果、人脸效果和世界效果 获得关于增强现实如何在网络浏览器中工作的基本理解 掌握使用WebXR、mind-ar-js和threejs构建web AR应用程序 学习使用…

umi脚手架搭建的项目_15天零成本搭建静态博客,托管于Github Page
博客地址技术栈概览前台:Umi(路由) Antd(视图) TypeScript(增加项目可维护性以及规范性)后台:Umi(路由) Antd(视图) TypeScript(增加项目可维护性以及规范性) Rematch(数据管理)服务:Egg.js(基于koa的下一代企业级应用框架) MongoDB搭建…

[maven] 使用问题及思考汇总
(1)Maven坐标 maven坐标可以唯一标识一个项目,包含四个元素 groupId , artifactId, packaging, version。 groupId:一般为团体,公司,项目。如 oceanic-web, oceanic-dal, oceanic-biz 同属一个 groupId。 artifactId:在…

VS调试时提示此项目已经过期
问题出因: 1.先前卸载VS重新安装时不全面 解决办法: 1.VS应安装两个C的组件 2.首先在“生成”-》 “生成解决方案”完成编译,问题解决。

(DBA之路【五】)关于锁的故事
首先很抱歉:这篇文章我其实整合了很多别人的文章,但是因为太多,一开始被没留意出处所以很难声明来源,很抱歉,但是这篇文章只用来作为学习笔记,作为新手,我以后会注意的。(一…
Android Studio Day03-1(Android studio 系统界面简介)
IDE(integrated Development Environment)的主要的目的就是用来编辑文本的。 在界面中的分布如下(以下的两张图片均为的《Android studio实战快速高效地构建Android应用》一书中的)

全流程游戏模型制作学习教程
尤金彼得罗夫|时长:36小时 |视频:H264 19201080 |音频:AAC 44,1 kHz 2ch |大小解压后 35 GB 含课程文件 |语言:英语 (无字幕,) 在本教程中,我将介绍为现代FPS视频游戏创建游戏就绪武器资产的整个过程。我将展示我的工作管道,使用…

requirednew基于xml配置日志不回滚_Elasticsearch配置IK分词器的远程词库
在生活中很多很多地方都涉及到了全文检索,最常见的就好比日常使用到的百度搜索等搜索引擎,也都是基于全文检索来实现的;全文检索种类较多,就好比Elasticsearch、Sorl等。为Ealsticsearch配置词库,可以很好的解决生活中…

PS切图篇(一)---界面设置
#工作区设置 四大主要面板:信息 字符 图层 历史记录 打开必要属性: 选择工具设置 选择图层的方式:ctrl鼠标左击想选择的图层转载于:https://www.cnblogs.com/yinzf/p/5339873.html
简单解决用VS编写hello world时命令行一闪而过
一、在return 0;前一行加一个getchar(); 二、使用项目模板为 windows 桌面向导 c 3、命令行控制台一闪而过。这是我们使用空文件夹加载的项目,默认不是控制台应用程序,新建控制台程序,或者在代码中加入system(“pause”);这种通过代码人为的…

粒子群算法(1)----粒子群简要
一、历史粒子群算法从复杂适应系统衍生PSO算法(Complex Adaptive System,CAS)。CAS理论于1994年正式提出,CAS中的成员称为主体。比方研究鸟群系统,每一个鸟在这个系统中就称为主体。主体有适应性,它能够与环境及其它的…
Android Studio Day03-2(常用操作)
(1)选择文本 1.CtrlA 选中全文 2.在将光标置于任意的单词中时按住CtrlW,选中整个词 继续按CtrlW 选中的区域将扩大,扩大至包含任意数量的相邻的单词 按CtrlwShift 进行区域的缩小 (2)Undo和Redo&…

Blender数字雕刻终极指南学习教程
CGBoost–Blender中的3D雕刻大师–数字雕刻终极指南 大小:29G 含课程项目文件 Master 3D Sculpting in Blender – The Ultimate Guide to Digital Sculpting 本课程教你所有重要的Blender雕刻基础知识,以及如何仅使用免费工具从头开始创建令人惊叹的3D雕…

生产指挥调度系统_市安全生产应急救援指挥中心将大型装载机械设备储备信息纳入应急指挥调度系统...
为拓展应急救援力量体系,发挥社会力量在开展全市重特大突发事件应急救援中的重要作用,近日,市安全生产应急救援指挥中心在加强应急指挥信息平台“一网七库”建设的基础上,成功对接甘肃省非道路移动机械监管平台,做到数…

java.sql.Exception:setString 只能处理少于 32766 个字符的字符串
java.sql.Exception:setString 只能处理少于 32766 个字符的字符串 解决方式是 : 升级ojdbc的版本, 将原来的 ojdbc14_10.2.0.2.0.jar 升级到 ojdbc6_11.2.0.1.0.jar这边行方用的是 oracle版本是 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0maven 安装到本地…

无需自己输入include这些的方法
使用项目模板为 windows 桌面向导 c 不用空白项 直接默认 不用勾选其他

第二次团队冲刺2
实现了查询的webservice服务端,做了查询时等待界面,对查询速度做了一点优化。 还写了一个入馆须知模块,介绍图书馆借阅规则。 还有借阅个人信息没做出来,还没进行界面优化。 转载于:https://www.cnblogs.com/318abc/p/4569576.htm…
Android StudioDay03-3(键盘导航)
Android Studio Day03-3(键盘导航) (1)打开Select In 快捷键:altF1 如下图: (2)打开Class CtrlN Class操作允许用后导航到特定的JAVA类),因此此操作也只能在Java文件中使用。 Android studio已…

虚幻中的风格化环境制作学习教程
Learn Squared-Tyler Smith-虚幻中的风格化环境 信息: 像AAA游戏开发者一样在虚幻引擎中创建风格化的环境。行业领先的游戏艺术家泰勒史密斯将教你在虚幻引擎中构建美丽的实时世界的规划、构建、集成和优化阶段使用多种巧妙的技术。 大小解压后:22G 时长6h 13m 19…

【转】oracle PLSQL基础学习
【转】oracle PLSQL基础学习 --oracle 练习;/**************************************************PL/SQL编程基础***************************************************************/--firstday--》》》数据类型-- Create tablecreate table T_CSCUSTOMER( CUST_NO…

python如何创建不同元素的矩阵_python – 如何在数据帧中创建矩阵元素的数...
我在.TXT文件中有3个参数’A’,’B’,’C’的数据集,在我用2420矩阵打印后,我需要收集’A’,’B’,’C’的第一个元素熊猫数据帧中的长数组,然后是每个第二个元素,然后是第3个,直到第480个元素为止. 所以我的数据在文本文件中是这样的: 我的数据是txt文件如下&#…

wps多窗口打开
在wps中打开wps文档不在一个窗口的方法如下: 1、启动wps文档,点击wps文字→选项,在弹出的选项对话框点击视图选项卡,勾选 在任务栏中显示所有窗口;

RHEL7.0系列 修改字符终端分辨率
由于是在VM里面安装的,完了之后终端界面的分辨率非常高,很难操作 因为RHEL7用了grub2,而不再是grub了,在grub2中要修改的文件是/boot/grub2/grub.cfg; 这里有一张分辨率的对照表(在grub.cfg中添加vgaask,系统重启后就会…