面向对象的Java实现
1.面向对象的Java实现--封装
1-1:封装
a.为什么需要封装(封装可以是数据方便维护、增加实用性、方便扩展等等。通过面向对象的思想,模拟现实生活中的事物。)
b.什么是封装(封装就是将属性私有化,提供共有的方法访问私有属性)
c.如何实现封装
例如:
package s2java.sg.ch01;
public class AccpTeacher3{
private String name;//教员姓名
private int age;//年龄
public String getName(){
return name;
}
public void setName(String MyName){
name=MyName;
}
public int getAge(){
return age;
}
public void setAge(int age){
if(age<22){
System.out.println("错误!最小年龄应为22岁!");
this.age=22;//若果不符合年龄要求,则赋予默认值
}else{
this.age=age;
}
}
/*
*返回自我介绍的内容
*/
public String introduction(){
return "大家好!我是"+name+",我今年"+age+"岁";
}
}
1-2:构造方法
a.为什么需要构造方法(使用构造方法可以给属性赋值。而且,实例化一个对象实际上就是去调用这个对象的构造方法。)
b.什么是构造方法(构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值。)
构造方法必须满足以下语法规则:方法名与类名相同和没有返回类型。或者会所二名同、无返型。
c.带参数的构造方法(带参数的构造方法可以在构造方法中传递参数。)
在使用带参数的构造方法示例化对象时,传递的值和构造方法的参数应当在个数、次序和类型上互相匹配。
例如:AccpTeacher6 teacher=new AccpTeacher6("李名",23,"本科","咨询师");
通过调用带参数的构造方法,在创建对象时,一并完成了对象成员的初始化工作,简化了对象初始化的代码。
1-3:方法重载
a.生活中的方法重载
例如:
一个司机可以驾驶不同的车子,虽然驾驶的行为实现各不相同,但是这些 操作都称为驾驶。驾驶这一行为就构成了生活中的方法重载。
b.方法重载的代码示例
例如:
public static int max(int a,int b)
public static int max(long a,long b)
public static int max(float a,foat b)
public static int max(double a,double b)
多次调用Math类的max()方法,分别进行不同的取最大值的操作。
例如:
public class Test{
public static void main(String[] args){
Math.max(1,2);
Math.max(1.0F,2.F);
Math.max(1.0,2);
}
}
c.构造方法重载(构造方法重载是方法重载的一个典型特例)
例如:
package s2Java.sg.ch02;
public class AccpTeacher7{
private String name;//教员姓名
private String school="北京中心";//所在中心
public AccpTeacher7(String name){
this.name=name;//设定教员姓名
}
public AccpTeacher7(String name,String school){
this.name=name;//设定教员姓名
this.school=school;//设定教员的所在中心
}
public String introduction(){
return "大家好!我是"+school+"的"+name;
}
}
例如:
package s2java.sg.ch01;
public class AccpTeacher7Test{
public static void main(String[] args){
AccpTeacher7 teacher1=new AccpTeacher7("李明");
System.out.println(teacher1.introduction());
AccpTeacher7 teacher2=new AccpTeacher7("张兴","天津中心");
System.out.println(teacher2.introduction());
}
2.面向对象的Java实现--继承和多态
2-1:继承
a.生活中的继承(动物<--食草动物与食肉动物。食草动物<--兔子和小白羊,食肉动物<--老虎和狮子。箭头指向的方向为父类!)
b.为什么需要继承(使用继承可以有效实现代码复用)
c.如何实现继承(在Java语言中,用extends(extends代表扩展的意思)关键字用来表示一个类继承了另一个类)
例如:
public class AccpJavaTeacher2 extends AccpTeacher{
}
此例就表明AccpJavaTeacher2类继承了AccpTeacher类
注意:Java中同C#一样不允许有多重继承
解释:方法重写,如果子类中定义的一个方法,名称、返回类型及参数列表与父类的某个方法,名称、返回类型及参数列表完全一致。这就称为方法的重写!
d.一切类的祖先--Object(Java类都是直接或间接地继承了java.lang.Object类,Object类是所有类Java类的祖先。)
假如在定义了一个类时,没有使用extends关键字,那么这个类直接继承Object类。
例如:public class MyObject(){}
2-2:多态
a.为什么需要多态(多态是面向对象思想的核心!如此做好处:代码的可扩展性及可维护性提高)
b.什么是多态(多态是具有表现多种形态的能力的特征或者用专业语言说:同一个实现接口,使用不同的实例而执行不同的操作。)
c.如何实现多态
三个步骤:
(1)子类重写父类的方法
(2)把父类类型作为参数类型,该父类及其子类对象作为参数传入
(3)运行时,根据实际创建的对象类型动态决定使用哪个方法
注意:多态性与继承、方法重写密切相关。好处:不仅减少代码量,也能大大提高程序的可扩展性及可维护性。
3.面向对象的Java实现--接口
3-1:Java接口
a.生活中的接口(电脑的USB接口、电源插板、等等)
b.什么是Java接口(一个Java接口是一些方法特征的集合,但没有方法的实现。Java接口中定义的方法在不同的地方被实现,可以具有完全不同的行为。)
c.为什么需要Java接口(增加代码的可维护性和可扩展性,当一个方法不知道如何实现,或者说实现什么样的效果的时候。此时就可以用到接口)
经验:使用继承或者Java接口都可以为我们带来多态的好处。一般情况下,当两个类之间符合"is-a"的关系,并且子类可以复用部分父类的代码,
我们使用继承关系实现。其它情况先选择Java接口。
注意点:Java接口不能被实例化、Java接口中声明的成员自动设置为public,因此Java接口中不能声明私有的成员、
Javajiek中不能出现方法体实现、实现某个Java接口,就必须实现其中定义的所有方法。
3-2:面向接口编程
a.什么是面向接口编程(要正确地使用Java语言进行面向对象的编程,从而提高程序的复用性,增加程序的可维护性、可扩展性,就必须是面向接口的编程)
开发系统时,主体构架使用接口,接口构成系统的骨架。这样就可以通过更换实现接口的类来更换系统的实现。
b.面向接口编程的示例(打印机、风扇等等)
采用面向接口编程的方式实现可分为3步骤:
(1)抽象出Java接口
(2)实现Java接口
(3)使用Java接口
3-3:常量
a.为什么需要常量(如:一天24小时,时间是不可以被更改的。项目的版本信息是不可更改的。等等!! 从而使用常量)
b.什么是常量(常量是一种标识符,它的值在运行期间恒定不变。常量标识符在程序中只能被引用,不能被重新赋值!)
例如:
public final class Math{
//圆周率PI
public static final double PI=3.1415926;
//将angdeg角度转换成径度
public static double toRadians(double angdeg){
return angdeg/180.0*PI;
}
}
c.常量的优点(使用常量代替信息,可以增强程序的可读性以及可维护性。)
d.Java中常量的定义规则(在Java接口中定义常量会自动加上public static final的修饰符,因此,在java接口中定义常量是最佳地点。)
e.在Java接口中声明常量
例如:
public interface AccpSchoolType{
String ACCP="ACCP加盟中心";
String BENT="BENT直营中心";
}
4.使用异常处理程序错误
4-1:异常
a.生活中的异常(大街上,突然出现一辆宝马,撞上老太太。 桥在下雨的时候突然,断了!等等 异常现象....)
b.程序中的异常(在一次课程编程查询上面,提示用户录入数字信息。但是,用户录入字符串,出现异常等等!异常状况....)
c.什么是异常(异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。)
4-2:异常处理
a.什么是异常处理(预处理:在异常未发生的时候,预先做出的一些措施!万一程序发生异常了,就处理完了异常过后,程序继续运行!)
b.Java中如何进行异常处理
Java的异常处理通过5个关键字来实现的:try、catch(捕获)、finally、throw(抛出)和throws声明异常
例如:
package s2Java.sg.ch04;
public class Test{
public void method(){
try{
throwException(1);
}catch(Exception e){
System.out.println("捕获到异常!");
}finally{
System.out.println("finally中的代码一定会执行!");
}
}
public void throwException(int i) throws Exception{
if(i==1){
throw new Exception();
}
}
}
注意:throw抛出异常、throws声明异常
c.try-catch块(使用和C#里面一样!)
d.try-catch-finally块(使用和C#里面一样!)
e.多重catch块(可以包含多个catch块,排放次序是从特殊到一般,最后一个一般都是Exception类)
注意:Exception异常类是一切子类的父类(一般情况下)
f.抛出异常(例如:上一个例子!同理....)
g.声明异常(例如:上一个例子!同理....)
4-3:log4j
a.使用log4j记录日志信息
b.什么是日志(日志主要用来记录一些重要的操作信息,有价值的信息可以帮助用户提前发现和避开灾难,并找到事件发生的根本原因。)
c.如何使用log4j记录日志 详细情况请看P81
面向对象的Java实现的更多相关文章
- 面向对象编程 —— java实现函数求导
文章目录 ★引子 ★求导 ★最初的想法 ★初步的想法 ★后来的想法 ★最后的想法 ★编程范式 ★结尾 首先声明一点,本文主要介绍的是面向对象(OO)的思想,顺便谈下函数式编程,而不是教你如何准确地.科 ...
- 201771010118马昕璐《面向对象程序设计java》第八周学习总结
第一部分:理论知识学习部分 1.接口 在Java程序设计语言中,接口不是类,而是对类的一组需求描述,由常量和一组抽象方法组成.Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个 ...
- 201771010134杨其菊《面向对象程序设计java》第十周学习总结
第8章泛型程序设计学习总结 第一部分:理论知识 主要内容: 什么是泛型程序设计 泛型类的声明及实例化的方法 泛型方法的定义 ...
- 201771010134杨其菊《面向对象程序设计java》第九周学习总结
第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...
- 201771010134杨其菊《面向对象程序设计java》第八周学习总结
第八周学习总结 第一部分:理论知识 一.接口.lambda和内部类: Comparator与comparable接口: 1.comparable接口的方法是compareTo,只有一个参数:comp ...
- 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结
<面向对象程序设计Java>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...
- # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结
095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)
094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)
093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
随机推荐
- springmvc处理过程理解(一)
DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器:根据url查找Handler.(可以通过xml配置方式,注解方式) H ...
- MySQL基本使用
来自李兴华视频. 1. 启动命令行方式 2. 连接mysql数据库,其中“-u”标记的是输入用户名,“-p”标记的是输入密码. 3. 建立一个新数据库——mldn,使用UTF-8编码: create ...
- SQL Server DATEADD() 函数及实际项目应用注意事项
1. DATEADD() 函数的解释和语法分析 DATEADD() 函数在日期中添加或减去指定的时间间隔. 语法: DATEADD(datepart,number,date) date 参数是合法的日 ...
- mysql 5.7.18 winx64安装配置方法
在mysql-5.7.18-winx64文件夹下新建my.ini文件 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置 ...
- 记录一次在centos下使用gmp的悲伤
有个作业是需要在linux下做的,并且需要用到gmp这个 library : 我使用的是虚拟机centos7.很久没碰过linux了,忘得差不多了,一点点百度出来的 1. 首先检查是否已存在gmp库 ...
- [JS]计算字符串中出现最多的字符和其出现次数
这是一道面试题 此处是利用Obj来解决的,当然不只此一种方法. //思路:遍历数组,拿到一个字符,并将之以 "字符":出现次数 的key:value形式存到对象中. //如果此字符 ...
- Spark多种运行模式
1.测试或实验性质的本地运行模式(单机) 该模式被称为Local[N]模式,是用单机的多个线程来模拟Spark分布式计算,通常用来验证开发出来的应用程序逻辑上是否有问题. 其中N代表可以使用N个线程, ...
- Codeforces 1043 F - Make It One
F - Make It One 思路: dp + 容斥 首先, 答案不会超过7, 因为前7个质数的乘积大于3e5(最坏的情况是7个数, 每个数都缺少一个不同的因子) 所以从1到7依次考虑 dp[i][ ...
- 最长连续子序列 Longest Consecutive Sequence
2018-11-25 16:28:09 问题描述: 问题求解: 方法一.如果不要求是线性时间的话,其实可以很直观的先排序在遍历一遍就可以得到答案,但是这里明确要求是O(n)的时间复杂度,那么就给了一个 ...
- php set_time_limit()的作用是什么
php set_time_limit()用法测试 一.总结 一句话总结:在php中set_time_limit函数是用来限制页面执行时间的,如我想把一个php页面的执行时间定义为5秒就可以set_ti ...