第八节 多态和Object类
多态的定义:某一类事物的多种存在形态
例子:学生类:包含学生A和学生B
学生A对象对应的类型是学生A类型:StudentA studentA = new StudentA;
Student student = new StudentA();学生Student是学生A和其他学生事务中抽取出来的父类;父类的引用指向了子类对象。
多态的体现:
父类的引用指向了自己的子类对象。
Student student = new StudentA();
多态的强转:
Animal c = new Cat(); //子类转化为父类 向上转型
Cat cat1 = (Cat)c; // 向下转型 Animal 强转成Cat类型 //父类强转成子类:Animal类型c 强转成了 Cat类型c
多态的特点:
A. 在多态中成员函数的特点:
在编译时期:参阅引用性变量所属的类中是否有调用的方法。如果有,编译通过;
在运行时期:参阅对象所属的类中是否有调用的方法。
简单的总结就是:成员函数在多态调用时,编译看左边,运行看右边。
B. 在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)
C. 在多态中,静态(static)函数的特点:
无论编译和运行,都参考左边。
例如下面的代码:
1 |
class Fu{
int num=5;
void method1(){
System.out.println(" Fu Method_1");
}
void method2(){
System.out.println(" Fu Method_2");
}
static void method4(){
System.out.println(" Fu Method_4");
}
}
class Zi extends Fu{
int num=8;
void method1(){
System.out.println("Zi Method_1");
}
void method3(){
System.out.println("Zi Method_3");
}
static void method4(){
System.out.println(" Zi Method_4");
}
}
public class DuoTaiDemo_1 {
public static void main(String[] args){
Fu f=new Zi();
f.method1();
f.method2();
//f.method3();
System.out.println(f.num);
Zi z=new Zi();
System.out.println(z.num);
f.method4();
z.method4();
}
}
|
如果由f.method3(); 那么编译不会通过,因为在Fu类中没有这个方法。
num作为成员变量,无论编译和运行,都参考左边,也就是引用型变量所属的类,第一个是父类(Fu)中的num,第二个是子类(Zi)中的num。
Method4作为静态(static)函数,无论编译和运行,都参考左边。
最后程序的运行结果是:
- Zi Method_1
- Fu Method_2
- 5
- 8
- Fu Method_4
- Zi Method_4
Object类
它是所有对象的间接父类;该类中定义的所有对象都具备的功能。
equals()方法:
java认为所有的对象都具备比较性,都能比较大小。
示例:
class Test{
public static void main(String[] args){
Test t1 = new Test();
Test t2 = new Test();
System.out.println(t1.equals(t2));//其实equals就是用的我们==来比较的。
}
}
注意:我们在重写equals()方法的时候我们必须要先进行多态转型。
toString()方法:
class Test{
public static void main(String[] args){
Demo d = new Demo();
System.out.println(d.toString);//打印结果?
System.out.println(Integer.toHexString(d.hashCode()))
}
class Demo{
}
第八节 多态和Object类的更多相关文章
- Java 面向对象概述原理: 多态、Object类,转型(8)
Java 面向对象概述原理: 多态.Object类,转型(8) http://docs.oracle.com/javase/tutorial/java/IandI/override.html Java ...
- 多态、Object类和 JDK常用封装类型
多态 定义:某一类事物的多种存在形态. 多态的体现:父类的引用指向了自己的子类对象.父类的引用也可以接收自己的子类对象. 多态的前提:必须是类与类之间有关系,要么继承,要么实现.通常还有一个前提,存在 ...
- 《Java从入门到失业》第五章:继承与多态(5.8-5.10):多态与Object类
5.8多态 上面我们了解了向上转型,即一个对象变量可以引用本类及子类的对象实例,这种现象称为多态(polymorphism).多态究竟有什么用呢?我们先学习一个知识点. 5.8.1方法重写 前面我们学 ...
- 第二十九节: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 ...
- 基础学习day08---多态、简单工厂、Object类equals和toString
一.多态 1.1.多态概念 定义:某一类事物的多种存在形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型:猫 x = new 猫(); 同时猫也是动物中的一种,也可以 ...
- 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍
面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...
- 黑马程序员——JAVA基础之多态与Object
------- android培训.java培训.期待与您交流! ---------- 多态 : 多态定义: 某一类事物的多种存在形态. 多态的体现: 父类的引用指向了自己的子类对象. ...
随机推荐
- linux和Windows下用sublime text3编译运行C,C++
安装MinGW 1.首先安装MinGW,默认安装位置是C:\MinGW. 2.安装完成后,右键“我的电脑”->属性 ->高级->环境变量,在系统环境变量PATH里添加C:\MinGW ...
- WebForm母版页
母版页:可以把界面的部分代码进行重用 添加新项-母版页 在母版页中界面代码不要写在 <asp:ContentPlaceHolder ID="head" runat=" ...
- TCP三次握手--syn攻击
TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确 ...
- ESP8266使用笔记之常用固件
开发板使用的是NodeMCU开发板: 目录 1.学习使用ESP8266官方的SDK 1.1使用SDK提供的AT固件 1.2使用SDK Build固件 2.学习使用Nod ...
- Python 用户交互程序Input
1.用户交互,用户输入 用户输出命令是input. 设置一个变量并输出. name = input("name:") print(name) 注:python2 下 raw_inp ...
- dataguard从库删除归档的例子
deletearchlog.sh #!/bin/sh export PATH TABLE='v$archived_log' sqlplus -silent "/ as sysdba" ...
- Ansible在Ubuntu上的安装
#apt安装 apt-get install software-properties-common apt-add-repository ppa:ansible/ansible apt-get upd ...
- JS访问或设置cookie的方法+跨域调用方法
无意中从163网站获取的JS访问或设置cookie的方法,Log到日志上以防遗忘 //COOKIE功能检查function fCheckCookie(){ if(!navigator.cooki ...
- Lintcode40-Implement Queue by Two Stacks-Medium
40. Implement Queue by Two Stacks As the title described, you should only use two stacks to implemen ...
- el-checkbox遇到的问题
在官网中有实例 <template> <el-checkbox :indeterminate="isIndeterminate" v-model="ch ...