package com.study.oop.day01;
/**
 * 如果某个方法是静态 的,它的行为就不具有多态性
 * @author LuHongGang
 * @date 2017年6月5日
 * @time 下午4:19:21
 * @since 1.0
 * 构造函数并不具有多态性,它们实际上是static方法,
 * 只不过该static声明是隐式的。因此,构造函数不能够被override。
 */
public class staticDemo {
public static void main(String[] args) {
 
StaticSuper ss = new StaticSub();
ss.StaticMethod();                              // 这里调用的是父类中的静态方法  子类不能都重写父类中的该静态方法
ss.NotStaticMethod();
//ss.ThisMethodIsNotExistsInSuper();            // 程序编译不通过,向上造型   初始化后的对象只能调用 父类类型的方法和属性
/**
* Java 中向上造型: 父类类型的引用 指向子类的对象
* StaticSuper ss = new StaticSub();
*/
StaticSuper ss2 =  new StaticSuper();           // 向下造型
StaticSub  ss3 = (StaticSub) ss;              
//ss2.ThisMethodIsNotExistsInSuper();
//StaticSub ss4 = (StaticSub) new StaticSuper();//编译通过 ,运行异常
//ss3.ThisMethodIsNotExistsInSuper(); 运行时异常
System.out.println(ss3.name);
// 所以向下造型的时候 需要使用instanceof 
if(ss2 instanceof StaticSub){                   // 向下造型 的时候强制需要进行 判断  false
StaticSub ss5 = (StaticSub) ss2;
            System.out.println(ss5.name);
}else{
System.out.println(" 左边对象不是右边类的实例 ");
}
if(ss instanceof StaticSub){                    // true
StaticSub ss6 = (StaticSub) ss;
System.out.println(" 左边对象是右边类的实例 ");
ss6.ThisMethodIsNotExistsInSuper();         
}
}
}
class StaticSuper{
public static void StaticMethod(){
System.out.println("我是   父类   的静态方法");
}
public void NotStaticMethod(){
System.out.println("我是   父类   的非静态方法");
}
}
class StaticSub extends StaticSuper{
String name = "10010";
public static void StaticMethod(){
System.out.println("我是  子类  的静态方法");
}
public void NotStaticMethod(){
System.out.println("我是  子类  的非静态方法");
}
/**
*  该方法 在父类中并不存在,仅仅在子类中独有  
*  
*/
public void ThisMethodIsNotExistsInSuper(){
System.out.println("仅仅是子类独有的方法,这是 本类的一个扩展");
}
}

Java中的向上造型和向下造型等的更多相关文章

  1. Java中的向上转型和向下转型

    首先要明白一点向上转型和向下转型他们都是建立在继承的基础上. 一.向上转型 子类到父类的转换通常称作向上转型,通俗的说就是定义父类对象指向子类对象. 下面通过一个例子来深入理解向上转型. //定义一个 ...

  2. Java多态的向上转型和向下转型

    Java多态的向上转型和向下转型 向上转型:(子类转为父类,自动转型) 格式 :父类类型 变量名 = new 子类类型(); 注:子类赋值给父类,那这时这个父类就能调用子类的方法 向下转型:(父类转为 ...

  3. Java转型(向上转型和向下转型)

    在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 5.13.1 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就 ...

  4. C++中的向上类型转换和向下类型转换

    在c++的世界中有这样两个概念,向上类型转换,向下类型转换,分别描述的是子类向基类,和基类向子类的强制类型转换. 向上强制类型转换 切割:覆盖方法和子类数据丢失的现象生成切割(slice) class ...

  5. Java中的合并与重组(下)

    通过优锐课核心java学习笔记中,我们可以看到,码了很多专业的相关知识, 分享给大家参考学习. Java中的合并与重组上部分链接:https://www.cnblogs.com/youruike1/p ...

  6. 3.sql中的向上递归和向下递归

    1.向下递归 select * from table_name where 条件 connect by prior bmbm(本级关联条件)=sjbmbm(上级关联条件) start with bmb ...

  7. 【JAVA】关于向上转型与向下转型

    向上转型: 子类引用的对象转换为父类类型称为向上转型.通俗地说就是是将子类对象转为父类对象.此处父类对象可以是接口 如果子类重写了父类的方法,就根据这个引用指向调用子类重写的这个方法,不是调用父类的, ...

  8. Java多态、向上转型、向下转型知识分享(讲解全面)

    多态(方法的多态.对象的多态) 方法的多态 重写的多态(重要):子类继承父类,因此子类拥有父类属性和方法,如果子类重写父类方法,那么父类调用该方法的时候就会检查子类是否重写该方法,子类重写了就调用子类 ...

  9. java多态的向上转型与向下转型(与编译时类型与运行时类型有关)

    1.编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定. 当编译时类型和运行时类型不一致时,就会出现所谓的多态. 因为子类是一个特殊的父类,因此java允许把一个子类对象直接 ...

随机推荐

  1. CSS新内容

     margin 外边距                                 * margin  属性值最多有4个                 * ① 只写一个值:四个方向的margin ...

  2. 安装node-saas包报错问题

    项目中用到一些sass写的样式,但是每次一编译就报错 按照它上面的提醒,npm rebuild node-sass --force,还是一样有错.不过仔细看看他的错误信息我发现了其中这条: gyp v ...

  3. ES5 forEach()用法和提前终止遍历

    forEach()方法从头到尾的遍历数组,为每个元素调用指定的函数,第一个参数接收的是一个函数,第二个参数是可选的,如果有第二个参数,则调用的函数被看作是第二个参数的方法(第二个参数可以作为第一个调用 ...

  4. 单源最短路Dijkstra算法——matlab实现

    迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 基本思想 通过Dijk ...

  5. scala练手之数字转汉字小工具

    输入数字,转换成汉字,在统计数据量时很好用,而输入数字转成大写汉字,可以用于填写收据报销单哦 下载链接 https://pan.baidu.com/s/1nv3Ci6l 效果图如下: 直接上代码 ob ...

  6. 史上最全的njRAT通信协议分析

    Njrat,又称Bladabindi,该木马家族使用.NET框架编写,是一个典型的RAT类程序,通过控制端可以操作受控端的文件.进程.服务.注册表内容,也可以盗取受控端的浏览器的保存的密码信息等内容. ...

  7. 调试 Dockerfile - 每天5分钟玩转 Docker 容器技术(15)

    包括 Dockerfile 在内的任何脚本和程序都会出错.有错并不可怕,但必须有办法排查,所以本节讨论如何 debug Dockerfile. 先回顾一下通过 Dockerfile 构建镜像的过程: ...

  8. React入门---开始前的准备(上)-2

    开始前准备: 1.安装配置nodeJs(nodeJS官网) 检查安装成功: node -v npm -v 2.使用NPM配置React开发环境 (1). 创建项目文件夹(创建文件夹时,文件夹名不要起为 ...

  9. Sqlla: 数据库操作从未如此简单

    Sqlla 一套数据库的 ORM 微型库,提供简单高效的 API 来操作数据库. Sqlla 拥有极少的API,使用方式简单.让开发者不需要关心数据库操作的具体细节,只需专注SQL和业务逻辑.同时简单 ...

  10. C#中string,char[],byte[]互相转换

    string 转换成 Char[] string ss = "我爱你,中国"; char[] cc = ss.ToCharArray(); Char[] 转换成string str ...