多态、抽象、Object类
1.方法重写要求:方法名相同、参数类型相同、返回值相同或其子类返回值相同,子类修饰符要不小于父类
2.方法重载要求:方法名相同、参数类型不同、返回值没有改变、修饰符无关
3.多态的前提是继承。多态是定义一个方法,根据不同的角色需要生成的环境来呈现不同的业务逻辑。
public class Member{
public void buyBook(){
}
}
public OrdinaryMember extends Member{
public void buyBook(){
System.out.println("普通会员买书打九折!");}
}
public SuperMember extends Member{
public void buyBook(){
System.out.println("超级会员买书打六折!");}
}
public Cashier(){
private OrdinaryMember ordinaryMember;
public setOrdinaryMember(Ordinarymember ordinaryMemberset){
this.ordinaryMember = ordinaryMember;}
public setSell(){
this.ordinaryMember.buyBook();}
}
public Test{
public static void main(String [] args){
OrdinaryMember ordinaryMember = new OrdinaryMember();
SuperMember superMember = new SuperMember();
Cashier cashier = new Cashier();
cashier..setOrdinaryMember(ordinaryMember);
cashier.setSell();
}
}
4.多态具体定义有两种形式:
第一种:定义时形参为父类,实际传入子类类型参数
public void setSell (Member member){
member.buyBook();}
Cashier cashier = new Cashier();
OrdinaryMember ordinaryMember = new OrdinaryMember();
cashier.setSell(ordinaryMember);
第二种:返回值类型为父类,实际调用方法时返回为子类类型
public Member getMember(String name){
if(name.equals("superMember")){
return superMember;}else{
return ordinaryMember;}
}
5.多态应用:
Member member= new OrdinaryMember();//将子类对象转换为父类对象
//父类引用指向子类
SuperMember SuperMember = (SuperMember)new Member();//强制转换
6.如果一个方法只有方法声明没有方法体,那么这个方法就是抽象方法,如果一个类中有一个抽象方法,那么这个类必须定义为抽象类,抽象类和方法通过abstract修饰
7.抽象类与普通类的区别在于:抽象类不能实例化。抽象方法与扑通通方法的区别:抽象方法没有方法体
8.抽象类中可以定义普通方法,但是普通类中不能定义抽象方法
9.如果父类中有抽象方法,一旦子类继承了父类,那么子类必须重写抽象方法
public abstract Member{
public abstract void buyBook();
}
public SuperMember extends Member(){
@Override
public void buyBook(){
System.out.println("超级会员买书打六折!");}
}
10.如果子类也是抽象类就不用了重写抽象方法
11.Object类:java中最大的类。
Java中定义的一些类以及开发人员写的类的父类都是java类
Object类中最常见的方法有public String toString()以字符串形式返回对象信息
public boolean equals()方法:判别两个对象是否相同
public int hashCode();返回对象散列码
都可以被子类重写
多态、抽象、Object类的更多相关文章
- Java 面向对象概述原理: 多态、Object类,转型(8)
Java 面向对象概述原理: 多态.Object类,转型(8) http://docs.oracle.com/javase/tutorial/java/IandI/override.html Java ...
- 第八节 多态和Object类
多态的定义:某一类事物的多种存在形态 例子:学生类:包含学生A和学生B 学生A对象对应的类型是学生A类型:StudentA studentA = new StudentA; Student stude ...
- 多态、Object类和 JDK常用封装类型
多态 定义:某一类事物的多种存在形态. 多态的体现:父类的引用指向了自己的子类对象.父类的引用也可以接收自己的子类对象. 多态的前提:必须是类与类之间有关系,要么继承,要么实现.通常还有一个前提,存在 ...
- 《Java从入门到失业》第五章:继承与多态(5.8-5.10):多态与Object类
5.8多态 上面我们了解了向上转型,即一个对象变量可以引用本类及子类的对象实例,这种现象称为多态(polymorphism).多态究竟有什么用呢?我们先学习一个知识点. 5.8.1方法重写 前面我们学 ...
- 抽象,接口和Object类
在面向对象的概念中, 所有的对象都是通过类来表述的, 但并不是所有的类都是用来描绘对象的, 如果一个类中么有包含足够的信息来描绘一类具体的对象, 这样的类就是抽象类. 抽象类往往用来表征对问题领域进行 ...
- 第二十九节:Java基础知识-类,多态,Object,数组和字符串
前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...
- 第10章 接口、继承与多态----Object类
在Java中,所有的类都直接或间接继承了java.lang.Object类.Object类是比较特殊的类,它是所有类的父类,是Java类层中的最高层类.当创建一个类时,总是在继承,除非某个类已经指定要 ...
- 四. Java继承和多态10. Java Object类
Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: p ...
- 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍
面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...
- 黑马程序员——JAVA基础之多态与Object
------- android培训.java培训.期待与您交流! ---------- 多态 : 多态定义: 某一类事物的多种存在形态. 多态的体现: 父类的引用指向了自己的子类对象. ...
随机推荐
- delphi 给 Timage 加上滚动条方法
delphi Timage 加上滚动条的方法 1:将 Timage 放入 TScrollBox内,即 [1]设image1.parent:= ScrollBox1; [2]在Object I ...
- 用for打印九九乘法表
package com.jiemo.struct;public class ForShabi4 { public static void main(String[] args) { //1.先打印第一 ...
- Hadoop服务启动失败
Hadoop服务启动失败今天启动Hadoop时,终端报了一个新的错误 ```bashStarting namenodes on [192.168.19.128]192.168.19.128: ssh: ...
- Java中简单易懂的HashMap面试题(面试必备)
这篇文章仅限小编个人的理解,小编不是Java方向的,只是对Java有很高的学习兴趣 如果有什么不对的地方还望大佬指点 HashMap的底层是数组+链表,(很多人应该都知道了) JDK1.7的是数组+链 ...
- Java基础学习——复利计算
面对一个问题的时候,首先应该确定问题中存在多少参数,对每个参数进行定义.并知晓所写代码目标.思路清晰,
- 西电oj73题字符串处理
问题描述 有一种简单的字符串压缩算法,对于字符串中连续出现的同一个英文字符,用该字符加上连续出现的次数来表示(连续出现次数小于3时不压缩).例如,字符串aaaaabbbabaaaaaaaaaaaaab ...
- ES2016-ES2020
参考:https://zhuanlan.zhihu.com/p/59096242 备注:可以使用ES6取代的10个Lodash特性 https://www.w3cplus.com/javascript ...
- Python学习笔记--判断语句的延续
if else语句 示例: 需要注意的是,if后面必须有条件,而else后面可以不需要判断条件 案例: 实现: if elif else 语句 多条件判断,if 和 elif 后面必须有条件,else ...
- operator简介
原理 operator 是一种 kubernetes 的扩展形式,利用自定义资源对象(Custom Resource)来管理应用和组件,允许用户以 Kubernetes 的声明式 API 风格来管理应 ...
- 《golong入门教程📚》,从零开始入门❤️(建议收藏⭐️)
Go语言学习笔记 本菜鸟的Go语言学习笔记,历时1个月,包含了Go语言大部分的基本语法(不敢说全部),学习期间参考了各种视频,阅读了各种文章,主要参考名单如下: 点击跳转到参考名单<( ̄︶ ̄)& ...