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
JAVA 面向对象相关推荐
- java面向对象-------静态初始化块
1.构造方法用于对象的初始化!静态初始化块,用于类的初始化操作,在静态初始化块中不能直接访问非static成员. package java面向对象; /** * 测试静态初始化块 */public c ...
- JAVA面向对象-----final关键字
JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率.1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4: ...
- Java学习笔记二十五:Java面向对象的三大特性之多态
Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...
- 12 Java面向对象之多态
JavaSE 基础之十二 12 Java面向对象之多态 ① 多态的概念及分类 多态的概念:对象的多种表现形式和能力 多态的分类 1. 静态多态:在编译期间,程序就能决定调用哪个方法.方法的重载就表现出 ...
- 猫抓老鼠-Java面向对象特点梳理
我们先设计一个猫抓老鼠的小游戏: ⊙猫和老鼠都有名字和体重两种属性,猫有抓老鼠的方法,对应的老鼠则有逃跑的方法. ⊙首先游戏的结果是猫抓住了老鼠或者老鼠逃跑了,对于这两种情况,我们用体重来区分,若猫的 ...
- java面向对象特征及阐述,Java面向对象四个特征
Java面向对象有四个特征:抽象.封装.继承.多态.其中封装.继承.多态又被称为Java的基本特征. 抽象: Java中会把客观事物抽象成一个类.类就是封装了数据以及操作这些数据的代码逻辑实体.用字符 ...
- 20155328 《Java程序设计》 实验二(Java面向对象程序设计) 实验报告
20155328 <Java程序设计> 实验二(Java面向对象程序设计) 实验报告 单元测试 一.单元测试和TDD 编程时需理清思路,将编程需求等想好,再开始编.此部分可用伪代码实现. ...
- 第7篇-JAVA面向对象Ⅲ
第7篇-JAVA面向对象Ⅲ 每篇一句 :任何值得去的地方,都没有捷径 初学心得: 温故而知新 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-09| JAVA面向对象 Ⅲ] 1.J ...
- 谈谈java面向对象之抽象,手把手带你搞定java面试之面向对象
计算机语言晦涩难懂,打算利用通俗易懂的文字带领大家学习java基础.如果文中有什么错误的地方,欢迎大家在评论区指正,免得我误人子弟. Question:当面试JAVA开发岗位的时候,面试官最爱问的问题 ...
- java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式
[本文详细介绍了JAVA面向对象程序设计中的创建型设计模式,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 什么是设计模式 设计模式( Design pattern )是一套被反复使用.多数 ...
最新文章
- VC++ 判断文件或文件夹是否存在的快捷方法 _access
- seaborn系列 (12) | 增强箱图boxenplot()
- ci持续集成工程师前景_不要忽视持续集成(CI)/持续交付(CD)的13个优势
- 微软笔试题 2013暑期实习笔试题目
- Java 洛谷 P1308 统计单词数
- 基于php在线相册,基于PHP的图片相册管理分享系统设计
- Spine 2D animation for games
- WEB前端 基础知识汇总
- 何使用BERT模型实现中文的文本分类
- android刷机方法,介绍一种android的裸刷机方法(fastboot刷机实质)
- 使用Android DataBinding BindingAdapter和Dagger 2
- 【渝粤教育】国家开放大学2018年春季 0702-22T当代中国政治制度 参考试题
- 数据可视化—如何利用R,制作DashBoard
- Java继承和多态实现例子
- 自定义字体需要css的,CSS 自定义字体
- python毕业设计作品基于django框架的鲜花水果商城毕设成品(6)开题答辩PPT
- Java多线程-马士兵高并发视频教程笔记
- 指纹识别算法MZFinger5.0
- 变量的存储类别 extern static atuo register
- 易语言html加密解密,易语言实现-JScript.Encode加密解密(一)
热门文章
- Java项目:潜艇大战项目(java+swing)
- Java项目:精品酒店管理系统(java+SSM+mysql+maven+tomcat)
- show在php,show.php
- 守护进程中创建的对象php,在PHP中生成守护进程(Daemon Process)
- mysql5.7 zip安装配置_MySQL5.7的.zip文件的配置安装
- java有模糊查询吗,到底Java里的模糊查询语句该怎么写
- CSS动画效果无限循环放大缩小
- 小程序地图多个 circles 使用demo
- js上传文件,上传表单demo 包含后端php
- centos 脚本基础练习1