创建父类:

 package org.hanqi.pn0120;

 public class Father {

     private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} // public Father()
// {
// System.out.println("父类的构造方法");
// }
public Father (String name)
{
System.out.println("父类的有参的构造方法");
this.name = name;
}
//工作
public void work()
{
System.out.println("我劳动我光荣");
}
}

创建子类:

 package org.hanqi.pn0120;

 public class Son extends Father {
//Object a;所有类的父类 public Son()
{
//super 表示父类
super("儿子");
System.out.println("子类的构造方法");
}
public void sing()
{
System.out.println("我喜欢唱歌");
}
//覆盖(重写)
public void work()
{
//调用父类的方法
//super.work();
//System.out.println("我不喜欢上班,我要去参加海选");
System.out.println("我边上班边练歌");
} public static Object getData(int i)
{
Object rtn = null;
//获取数据
if (i==1)
{
//1 father
Father f = new Father("向上转型的父类");
//向上转型
rtn = f;
}
else
{
//2 son
Son s = new Son();
rtn = s;
}
return rtn;
}
}

创建测试类:

 package org.hanqi.pn0120;

 public class TestJiCheng {

     public static void main(String[] args) {
//
Father f = new Father("父亲");
f.setName("父亲");
f.setAge(50);
System.out.println("名字是:"+f.getName()+" 年龄是:"+f.getAge());
f.work();
Son s = new Son();
s.setName("儿子");
s.setAge(20);
System.out.println("名字是:"+s.getName()+" 年龄是:"+s.getAge());
s.work();
s.sing(); System.out.println(); //转型
//向上转型 子类转成父类
Father f1 = new Son();
System.out.println("名字是:"+s.getName());
f1.work();//如果被子类重写,调用子类的方法
//f1.sing 若父类想调用子类特有的成员,必须再进行向下转型 System.out.println("向下转型");
//向下转型 父类转成子类
//Son s1 = (Son) new Father("父亲");
Son s1 = (Son) f1;
s1.work();
s1.sing();
System.out.println(); Father f2 = (Father)Son.getData(1);
f2.work();
}
}

运行结果为:

总结:

 package org.hanqi.pn0120;

 public class TestZhuanXing {

     public static void main(String[] args) {

         // 向上转型
Object obj = new Son();
//判断某个对象是否是某个类的实例,返回boolean
if(obj instanceof Son)
{
System.out.println("obj是Son的实例");
} Father f = new Father(""); if(f instanceof Son)
{
System.out.println("f是Son的实例");
}
else
{
System.out.println("f不是Son的实例");
}
if(obj instanceof Father)
{
System.out.println("boj是Father的实例");
}
else
{
System.out.println("boj不是Father的实例");
} //向下转型
Son s = (Son)obj;
s.work();
s.sing();
Father f1 = (Father)obj;
f1.work();
}
}

运行结果为:

附思维导图:

课堂所讲整理:super和转型(修改版)的更多相关文章

  1. 课堂所讲整理:输入输出流(I/O)2(修改版)

    package org.hanqi.ex; import java.io.*; public class TestFile2 { public static void main(String[] ar ...

  2. 课堂所讲整理:HTML--8Window.document对象

    1.Window.document对象 一.找到元素: docunment.getElementById("id"):根据id找,最多找一个:    var a =docunmen ...

  3. 课堂所讲整理:HTML--7JavaScript的DOM操作

    1.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 2.Window对象操作 一.属性和方法: 属性(值或者子对象): op ...

  4. 课堂所讲整理:HTML--6运算符、类型转换

    1.类型转换: 分为自动转换和强制转换,一般用强制转换. 其他类型转换为整数:parseint(): 其他类型转换为小数:parsefloat(): 判断是否是一个合法的数字类型:isNaN(): 是 ...

  5. 课堂所讲整理:HTML--5JavaScript简介

    一.JavaScript简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司 ...

  6. 课堂所讲整理:输入输出流(I/O)

    package org.hanqi.ex; import java.io.*; public class TestFile { public static void main(String[] arg ...

  7. 课堂所讲整理:包装&工具类

    package org.hanqi.array; import java.util.Random; public class BaoZhuang { public static void main(S ...

  8. 课堂所讲整理:Set和Map

    Set相关知识: package org.hanqi.array; import java.util.*; public class Test2 { public static void main(S ...

  9. Android 仿美团网,大众点评购买框悬浮效果之修改版

    转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17761431),请尊重他人的辛勤劳动成果,谢谢! 我之前写 ...

随机推荐

  1. Lib New

    gacutil /if E:\ThirdParty\RockyLib\Rocky\bin\Release\Rocky.dll gacutil /u Rocky partial class GmailF ...

  2. Linux 上的常用文件传输方式介绍与比较

    ftp ftp 命令使用文件传输协议(File Transfer Protocol, FTP)在本地主机和远程主机之间或者在两个远程主机之间进行文件传输. FTP 协议允许数据在不同文件系统的主机之间 ...

  3. opencv中的Mat类型

    Mat类型主要是跟matlab中的数据类型一样.故用起来很方便. Mat最大的优势跟STL很相似,都是对内存进行动态的管理,不需要之前用户手动的管理内存,对于一些大型的开发,有时候投入的lpImage ...

  4. operation not possible due to RF-kill

    使用mdk3时出现这个问题operation not possible due to RF-kill 就是输入第一条命令 后出现 operation not possible due to RF-ki ...

  5. [super init]方法的调用

    当重新覆盖父类的init方法时,需要调用[super init]方法确认父类中的init是返回一个实例,而不是一个空的实例. 那为什么要调用这个呢? 我得猜测是这样的:因为这是一个初始化方法,需要对对 ...

  6. PHP中使用mysql处理结果集

    一.从结果集中将记录取出    mysql_fetch_row($result); 从结果集中取得一行作为枚举数组 mysql_fetch_row($result mysql_fetch_assoc( ...

  7. IOS 作业项目(4)步步完成 画图 程序(中续)

    一,程序布局整理 前言://1,程序启动//2,程序流程框架//3,程序界面一致//4,程序界面功能, //这里只做页面的固定功能, //在首次创建界面时,我们会指定好固定事件触发前的固定方法 //至 ...

  8. 简单的多线程(活用OD解决运行时错误)

    代码源自<VC++深入详解>第15章 “多线程”,位于第563页 - 566 页. 程序的目的是展示多线程运行的效果: #include <windows.h> #includ ...

  9. [转]在Windows中配置Rsync同步

    在Windows中配置Rsync同步 Rsync是一款不错的文件免费同步软件,可以镜像保存整个目录树和文件系统,同 时保持原来文件的权限.时间.软硬链接.第一次同步时 rsync 会复制全部内容,下次 ...

  10. NLP(Natural Language Processing)

    https://github.com/kjw0612/awesome-rnn#natural-language-processing 通常有: (1)Object Recognition (2)Vis ...