多态的定义:某一类事物的多种存在形态

例子:学生类:包含学生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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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)函数,无论编译和运行,都参考左边。

最后程序的运行结果是:

  1. Zi Method_1
  2. Fu Method_2
  3. 5
  4. 8
  1. Fu Method_4
  2. 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类的更多相关文章

  1. Java 面向对象概述原理: 多态、Object类,转型(8)

    Java 面向对象概述原理: 多态.Object类,转型(8) http://docs.oracle.com/javase/tutorial/java/IandI/override.html Java ...

  2. 多态、Object类和 JDK常用封装类型

    多态 定义:某一类事物的多种存在形态. 多态的体现:父类的引用指向了自己的子类对象.父类的引用也可以接收自己的子类对象. 多态的前提:必须是类与类之间有关系,要么继承,要么实现.通常还有一个前提,存在 ...

  3. 《Java从入门到失业》第五章:继承与多态(5.8-5.10):多态与Object类

    5.8多态 上面我们了解了向上转型,即一个对象变量可以引用本类及子类的对象实例,这种现象称为多态(polymorphism).多态究竟有什么用呢?我们先学习一个知识点. 5.8.1方法重写 前面我们学 ...

  4. 第二十九节:Java基础知识-类,多态,Object,数组和字符串

    前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...

  5. 第10章 接口、继承与多态----Object类

    在Java中,所有的类都直接或间接继承了java.lang.Object类.Object类是比较特殊的类,它是所有类的父类,是Java类层中的最高层类.当创建一个类时,总是在继承,除非某个类已经指定要 ...

  6. 四. Java继承和多态10. Java Object类

    Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: p ...

  7. 基础学习day08---多态、简单工厂、Object类equals和toString

    一.多态 1.1.多态概念  定义:某一类事物的多种存在形态.        例:动物中猫,狗.    猫这个对象对应的类型是猫类型:猫 x = new 猫();    同时猫也是动物中的一种,也可以 ...

  8. 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍

    面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...

  9. 黑马程序员——JAVA基础之多态与Object

    ------- android培训.java培训.期待与您交流! ----------  多态 : 多态定义:  某一类事物的多种存在形态. 多态的体现: 父类的引用指向了自己的子类对象.       ...

随机推荐

  1. caffe-ssd编译runtest时候报错:g++: internal compiler error: Killed (program cc1plus)

    大哥,你的内存不够了,删点儿东西吧

  2. Unity性能优化之特效合并

    特效合并,意思是说将粒子所用的零碎图片,以shader为单位合并成一张图集,好处就是可以降低draw call.试想,合并前每个粒子使用一个material,而每一个material就要占用一个dra ...

  3. html5dom2

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  4. jqueryd的post传递表单以及取消表单的默认传递

    //取消表单的默认传递: <form method="post" onsubmit="return false;"> 在FORM属性里添加 onsu ...

  5. 防火墙iptables 设置

    在服务器上架了一个tomcat,指定好端口号,我就开始访问,未果! 公司对服务器(RedHat)端口限制,可谓是滴水不漏! 用iptables 查看防火墙设置: Shell代码 iptables -n ...

  6. GoldenGate使用SQLEXEC和GETVAL实现码表关联

    使用OGG中的SQLEXEC参数,可以执行SQL语句或存储过程,再加上@GETVAL函数,可以在目标端获取源表没有的字段值.比如,源端有一个事实表和一个代码表COUNTRY_CODES,代码表中有两个 ...

  7. Linux环境sftp配置

    1.查看SSH版本,openssh版本必须大于4.8p1 ssh -V 2.创建用户组 groupadd sftp-users 3.在sftp-users用户组下创建admin,admin不用于登录系 ...

  8. pageUtil分页工具

    分页工具: https://www.cnblogs.com/ggq-insist-qiang/articles/10095603.html

  9. linux shell中如何往所有行尾添加内容

    答: sed -i 's/$/yes/' jello.txt 这句话的意思就是在jello.txt文件的所有行尾都添加相同的内容yes,如jello.txt原来的内容为: no jello hello ...

  10. shiro 分布式缓存用户信息

    很多分布式缓存登录用户信息一般都是存在redis类似的缓存里面.其中实现细节或者拆分都是大同小异. 一般用户登录权限管理都用shiro处理. 如果仔细分应该就是一下3种. 1,有一个单独的用户权限管理 ...