一、复习
1、封装
该隐藏隐藏,该公开的公开
属性隐藏,同时提供get/set方法
有些方法应该隐藏
方法声明公开,实现隐藏。实现的改变对架构的影响最小
2、继承
一般->特殊
单继承:一个类最多只能有一个直接父类。类之间可以形成树状关系
根据访问权限,子类如果可以访问父类的属性和方法,就能继承
private 私有 不能继承
default 本类+同包 同包子类可以继承,不同包子类不能继承
protected 本类+同包+不同包子类 可以继承
public 公开 可以继承
方法的覆盖(Override):
方法名相同,参数表相同,返回值相同,访问修饰符比父类相同或更宽,抛出的异常不能比父类更宽
继承关系下对象的构造过程
1)递归的构造父类对象
2)分配本类空间
3)初始化本类属性
4)调用本类的构造方法
super:
super. ->父类对象,访问父类被覆盖的方法或者父类被遮盖的属性
super() ->用在构造方法时,用来指明调用父类的哪个构造方法,放在构造方法的第一行,默认调用父类无参构造方法
3、多态
编译时多态:方法的重载
运行时多态:
子类对象当作父类对象来用!!!屏蔽同一父类下,不同子类差异
Animal a = new Dog();
允许引用类型和对象类型不同,但要求引用类型是对象类型的父类。
对象类型代表了对象自身客观的实际类型,引用类型代表了主观上把对象当作什么类型来看待。
引用类型:编译时类型,主观类型
对象类型:运行时类型,客观类型
1)对象运行时类型不变
2)只能对对象调用其编译时类型定义的方法
3)运行时根据对象类型去匹配对象类型中覆盖之后的方法
Super s1;
Sub s2;
s1=s2;
s2=s1; //error , s2=(Sub)s2
强制类型转换:当我们把父类的引用赋值给子类引用的时候,需要强制类型转换。强制类型转换失败:类型转换异常.
为了避免类型转换异常,使用instanceof判断
引用 instanceof 类名 引用指向的对象的类型与后面的类名是否兼容
多态的作用:通用编程
我们可以把不同子类的对象都当作父类对象看待,评比不同子类的差异。
二、CARP(组合/聚合复用原则)
实现代码重用最好的方法不是继承
两种复用
白盒复用,也就是继承复用,破坏封装,父类中的可以被子类访问到的就可以被继承,这样会有些不需要的内容被继承下来,所以这种方式不太好。
黑盒复用,也叫组合复用,也就是把要复用代码的类的对象作为本类中的一个属性,然后再通过方法的委托来实现由选择的复用。
方法的委托就是在本类的方法内部通过该类的对象调用要使用类的方法,不破坏封装。
注意:尽量用组合复用替代继承复用。
三、多态
1、多态用于参数,可以在方法的参数中传入其父类类型,在运行时会根据实际的运行时类型来在方法中进行相应的操作。
多态一般用在方法的参数上
void feed(Animal a){
a.eat();
}
调用的时候feed(new Dog()); //运行时,调用的是Dog类中覆盖的eat()方法
2、多态用于返回值,可以在方法的返回值类型上是用其实际返回值的父类型,在使用其返回值时也不关心其实际类型。
public static Animal getAnimal(int type){
if (type==0) return new Dog();
else return new Cat();
}
屏蔽子类差异,可扩展(只修改方法的实现,不必修改方法的声明)
3、Animal a = new Dog();
a.age; //访问属性是没有多态的,访问的是引用的age属性
a.eat(); //调用Dog类中覆盖Animal类中的eat()方法,多态
4、Animal a = new Dog();
method(a);
运行结果调用参数是Animal类对象的那个method()方法
方法的重载只看引用类型,跟引用指向的对象类型没有关系
四、对象的比较
String s1 = new String("abc");
String s2 = new String("abc");
s1 == s2; -> false 判断两个引用是否指向同一对象,即地址是否相同
s1.equls(s2); -> true 判断两个引用指向的对象的内容是否相同
练习:
(继承,多态)
银行的客户分为两类,储蓄账户(SavingAccount)和信用账户(CreditAccount),区别在于储蓄账户不允许透支
而信用账户可以透支,并允许用户设置自己的透支额度.
注意:CreditAccount需要多一个属性 ceiling 透支额度
为这两种用户编写相关的类
同时要求编写Bank类,属性:
1.当前所有的账户对象的集合,存放在数组中
2.当前账户数量
方法:
1.用户开户,需要的参数:id,密码,密码确认,姓名,身份证号码,邮箱,账户类型,返回新创建的Account对象
提示:用s1.equals(s2) 可以比较s1,s2两个字符串的值是否相等.账户类型是一个整数,为0的时候表示储蓄账户,为1的时候表示信用账户
2.用户登录,参数:id,密码 返回Account对象
3.用户存款,参数:id,存款数额,返回修改过的Account对象
4.用户取款,参数:id,取款数额,返回修改过的Account对象
5.设置透支额度 参数:id,新的额度 ,返回修改过的Account对象.这个方法需要验证账户是否是信用账户
用户会通过调用Bank对象以上的方法来操作自己的账户,请分析各个方法需要的参数
另外,请为Bank类添加几个统计方法
1.统计银行所有账户余额总数
2.统计所有信用账户透支额度总数
写个主方法测试你写的类
分享到:
相关推荐
5. **Java复习第五天**:继续深入面向对象,可能会涵盖抽象类、接口、访问修饰符以及构造器等高级话题。 6. **Java复习第六天**:可能讲解异常处理,包括try-catch-finally语句块,异常类层次结构,以及如何自定义...
老师发的复习材料 第一讲_Java概述 第二讲_Java语法基础 第三讲_类对象和方法 第四讲_继承和接口 第五讲_字符串 第六讲_异常 第七讲_输入输出、网络通讯 第八讲_Java的数据结构 第九讲_数据库编程
1. **基础语法**:这是学习Java的第一步,包括数据类型(如基本类型和引用类型)、变量、运算符、控制结构(如if-else、switch、for、while循环)、方法、数组等。理解这些概念对于编写任何Java程序都是至关重要的。...
"JAVA书本复习题答案整合"是一个精心整理的资源包,它集合了多套Java书本复习题目及其对应的答案,旨在帮助学习者高效地备考期末考核。 1. **Java基础知识**:复习题可能涵盖了Java的基础语法,如变量、数据类型、...
这个"JAVA复习题库"旨在帮助学习者巩固和深化对Java语言的理解,准备相关考试或者面试。以下是对Java核心知识点的详细阐述: 1. **Java基础** - **变量与数据类型**:Java支持基本数据类型(如int、char、boolean...
【Java 考试复习指南】 1. Java 编译过程:Java 源程序文件(扩展名为 .java)经过Java编译器编译后,会生成字节码文件(扩展名为 .class)。这是Java程序运行的基础,因为JVM(Java虚拟机)执行的是字节码。 2. ...
### 全国等级考试二级Java复习资料核心知识点详解 #### 一、Java的历史与现状 - **Java的历史起源** - Java的起源可以追溯到上世纪90年代初,当时Sun Microsystems公司启动了一个名为Green的项目,旨在为家用消费...
5. **字符串与字符串处理**:String类在Java中扮演着重要角色,复习题可能包含字符串的创建、比较、拼接、查找、替换等操作。同时,StringBuffer或StringBuilder的使用也是常见的考点。 6. **输入/输出流**:Java的...
5. **第五章:接口与抽象类** - 接口的概念和用途 - 抽象类与接口的区别 - 实现接口和继承抽象类的方式 - 多接口实现与多重继承 6. **第六章:异常处理** - 异常分类:检查型异常和运行时异常 - try-catch-...
5. 动态性:Java支持动态加载类和运行时类型信息,可以在运行时发现和加载新的类库。 Java的开发步骤具体包括: 1. 编写源文件:源代码文件的扩展名为.java。如果源文件包含多个类,则只能有一个公共类(public ...
这个“JAVA复习ppt”很可能是华南理工大学为了帮助学生系统复习Java编程知识而制作的教学材料。Java的特点包括跨平台性、简单性、面向对象、健壮性和安全性,这些特性使得它成为开发桌面应用、企业级应用、移动应用...
本书《Java语言程序设计 进阶版 第十版》提供的复习题及其答案,旨在帮助读者巩固并深化对Java语言的理解。下面将详细讨论复习题中涉及的一些关键知识点。 1. **面向对象编程**:Java是一种面向对象的语言,复习题...
Java语言程序设计第五版复习纲要 Java语言程序设计第五版复习纲要涵盖了Java语言的基本概念和程序设计技术。本资源的目的是为了帮助读者快速掌握Java语言的基本知识点,并提供了每一章的重要知识点的说明概况。 第...
这份“Java复习资料”包含了丰富的Java学习资源,旨在帮助学习者巩固和提升他们的Java编程技能。 Java的学习通常分为几个关键部分: 1. **基础语法**:Java的基础包括变量、数据类型、运算符、控制结构(如if语句...
使用`super`关键字可以在子类构造函数中显式调用父类的构造函数,但`super`语句必须是子类构造函数的第一个可执行语句。 7、重载(Overloading)是Java中多态的一种表现形式,允许在一个类中定义多个同名方法,但...
【JAVA课程总复习】 在Java编程领域,复习是巩固学习成果和提升技能的关键步骤。"JAVA课程总复习"涵盖了从基础到高级的各种Java知识点,旨在帮助开发者系统地回顾和理解这个强大而广泛应用的编程语言。 首先,我们...
在这个Java复习资料中,我们可以看到一系列关于这个主题的PPT和文档,旨在帮助学习者掌握关键概念并为期末考试做好准备。 首先,从《Java程序设计》期末复习题.doc中,我们可以预期这是一份综合性的复习指南,可能...
【Java复习知识点】 Java是一种广泛使用的面向对象的编程语言,具有丰富的类库和强大的功能。在Java课程复习中,理解并掌握以下几个关键知识点至关重要: 1. 抽象类与抽象方法: - 题目中的`MyClass`被声明为抽象...
java复习模拟试题,高质量。经典题例子,附有答案,让你收获多多,成绩稳步提高! 部分内容如下,点击下载可看全部哦!!! 6分析下面的Java程序,编译运行结果是()。(选一项) public class B{ public static ...