`

一阶段-EighthWork-1-字符流+缓冲流

 
阅读更多
/*
定义一个宠物类(Pet),它有两个方法:叫cry(),吃东西eat(),定义宠物的子类狗(Dog),猫(Cat),覆盖父类的cry(),eat()方法,
里面写System.out.println("猫吃了鱼")这样的打印语句,另外狗有自己的方法看门guardEntrance(),猫自己独有的方法捉老鼠huntMice()
定义一个Test类,在main中定义两个Pet变量,pet1,pet2,采用引用转型实例化Dog,Cat,分别调用Pet的cry(),eat();
* (2)将Pet引强制转换为具体的Dog,Cat,在调Dog的guardEntrance(),Cat的huntMice()(提示:先用instanceof进行类型判断)
* (3)(思考)修改Test类,添加喂养宠物feedPet(Pet pet)的方法,在feedPet中调cry(),eat()方法,实例化Test类,再实例化狗 Dog dog = new Dog(),
猫 Pet cat = new Cat(), Test分别调feedPet()方法分别传参数cat,dog,思考这两种方式的异同,深入理解引入转型和多态
*/

package EighthWork;

/**
*
* @author Administrator
*/
public abstract class PetTest
{

    //这里体现的是多态的实现机制,通过传入参数的对象不同来实现多态
    public void feedPet(Pet pet)
    {
        System.out.print("\n");
        pet.cry();
        pet.eat();
    }
    public static void main(String[] args)
    {
        //采用转型实例化Dog和Cat
        //属性和方法的调用是不同的,属性跟着父类引用的类型一致,方法与实例的引用一致
        //也就是属性是在编译时就由父类决定 ,方法在由运行时决定
        Pet pet1 = new Dog();
        pet1.cry();
        pet1.eat();
        pet1 = new Cat();//实现动态多态的要求:继承、实例名字相同、
        pet1.cry();
        pet1.eat();
      //将Pet强制转换为具体的Dog和Cat
//        Pet pet1 = new Dog();
//        Pet pet2 = new Cat();
//        if(pet1 instanceof Dog)
//        {
//            Dog dog = (Dog)pet1;
//            dog.guardEntrance();
//        }
//        if(pet2 instanceof Cat)
//        {
//            Cat cat = (Cat)pet2;
//            cat.huntMice();
//        }
        //通过传递对象参数的引用实现多态
//        PetTest petTest = new PetTest();
//        Dog dog = new Dog();
//        Pet cat = new Cat();
//        petTest.feedPet(dog);
//        petTest.feedPet(cat);
    }

}
============================================
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package EighthWork;

/**
*
* @author Administrator
*/
public abstract class Pet
{
    public void cry()   //抽象类中也允许有非抽象方法
    {
        System.out.print("宠物在叫");
    }
    public void eat()
    {
        System.out.print("宠物在吃");
    }
//抽象类都是应用于继承,子类应该重写抽象类中所有的抽象方法
    public abstract void PetEat();

}
========================================
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package EighthWork;

/**
*
* @author Administrator
*/
public class Dog extends Pet
{
    public Dog()
    {
        System.out.println("养了一只狗");
    }
    public void cry()
    {
        System.out.println("狗的叫声:汪汪...");
    }
    public void eat()
    {
        System.out.println("狗啃了一根骨头");
    }
    public void guardEntrance()
    {
        System.out.println("宠物狗在看门");
    }
    public void PetEat()
    {

    }
}
=======================================
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package EighthWork;

/**
*
* @author Administrator
*/
public class Cat extends Pet
{
    public Cat()
    {
        System.out.println("养了一只猫");
    }
    public void cry()
    {
        System.out.println("猫在叫:喵喵...");
    }
    public void eat()
    {
        System.out.println("猫吃了一条鱼");
    }
    public void huntMice()
    {
        System.out.println("宠物猫抓了一只老鼠");
    }
    public void PetEat()
    {    }
}
分享到:
评论

相关推荐

    MySQL 入门学习 ——基础教程

    +-------------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) · 6、 往表中加入记录 我们先用SELECT命令来查看表中的数据: mysql> select * from mytable; Empty set (0.00 sec...

    day09-字节缓冲流&字符流1

    字节缓冲流与字符流概述 字节缓冲流是 Java 中的一种流类型,它可以提高读写效率。字节缓冲流可以分为字节缓冲输出流和字节缓冲输入流两种。字节缓冲输出流可以将数据写入到文件中,而字节缓冲输入流可以从文件中...

    JavaIO实例_字节流_字符流_缓冲流_转换流IODemo

    在Java中,IO流分为两大类:字节流和字符流,每种流又有输入流和输出流之分,分别用于数据的读取和写入。 1. **字节流**: - 字节流处理的是8位的字节数据,是最基本的流类型。Java中的`InputStream`和`...

    Java字符流与字节流区别

    Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元...字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高。

    SecureCRT(含Keygen).rar

    SecureCRT是一款广泛的终端仿真:支持 SSH1,SSH2,Telnet,RLogin,Serial,和 TAPI 协议。 本文件为4个执行文件,分别是32位和64位的SecureCRT安装器和Keygen生成器。 64位亲测可用,32位暂未测试使用。 ————...

    ADO助手V1.20---一个获取ADO连接字符串,测试SQL命令的辅助软件

    ADO助手---一个获取ADO连接字符串,测试SQL命令的辅助软件 2010-09-06 +初始版本发布 ADO助手---一个获取ADO连接字符串,测试SQL命令的辅助软件 2010-09-06 +初始版本发布 2011-11-09 -修复有时候用DataGrid...

    day09-字节缓冲流&字符流

    day09-字节缓冲流&字符流

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    1、博客地址:https://blog.csdn.net/gongjin28_csdn/article/details/121636558 ...代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。 4、代码的结构可查看README文件。

    JavaIO实例|字节流|字符流|缓冲流|转换流IODemo

    本教程将详细介绍Java IO中的字节流、字符流、缓冲流以及转换流,并通过IODemo实例来展示它们的用法。 ### 1. 字节流 字节流是Java中最基础的流类型,用于处理以字节为单位的数据。字节流分为输入流(InputStream...

    Java字符流和字节流

    - **字符流**使用缓冲区,提高了文本数据的处理效率,特别适合处理Unicode字符。 - 缓冲区可以显著提高数据处理的速度,尤其是在频繁访问文件时。 #### 六、拓展知识点 - **缓冲流(BufferedInputStream/...

    JAVA 字符流与字节流

    1. **数据单位**:字节流处理的是字节,字符流处理的是字符。 2. **编码**:字节流不关心数据的编码,而字符流必须指定字符集编码,以确保正确地读写文本数据。 3. **性能**:字符流的性能通常比字节流慢,因为它...

    java字符流操作

    1. **InputStreamReader与OutputStreamWriter**: 这两个类是字符流的基础,它们分别用于读取和写入字符。InputStreamReader是字节流到字符流的桥梁,它依赖于一个字节流(如FileInputStream)并根据指定的字符集解码...

    2023-04-06-项目笔记-第一阶段-5.2.1 常见的转义字符

    2023-04-06-项目笔记-第一阶段-4.4.1 局部变量的作用域 4.5.1 字面常量 4.5.2 const 修饰的常变量 4.5.3 #define 定义的标识符常量 4.5.4 枚举常量 5.1 字符串 5.1.1字符串使用 5.2 转义字符 5.2.1 常见的转义字符

    字符缓冲流Bufferd

    字符缓冲流Bufferd,直接粘贴到eclipse或者cmd运行即可

    MySQL 转义字符使用说明

    +-------+---------+-----------+--------+--------+ ¦ hello ¦ "hello" ¦ ""hello"" ¦ hel'lo ¦ 'hello ¦ +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello'...

    59-IO流(转换流的字符编码).avi

    59-IO流(转换流的字符编码).avi

    javaIO字符流文件写入总结共1页.pdf.zip

    - `BufferedReader`和`BufferedWriter`是缓冲流,提供了一次读写多个字符的能力,提高了效率。 - `PrintWriter`不仅具有写入功能,还支持格式化输出。 4. **文件写入的基本步骤** - 创建字符输出流对象,例如`...

    C语言-字符串常量(超详细)

    +---------------+ | 代码区 | +---------------+ | 全局区 | +---------------+ | 堆区 | +---------------+ | 栈区 | +---------------+ ``` 在这个内存图中,代码区存放CPU执行的机器指令,全局区存放...

    2024IO流-字符流-HM

    在Java中,除了字节流之外,还有一类流称为字符流。字符流主要用于处理文本数据,它能够避免字节流读取中文等多字节字符时可能出现的乱码问题。字符流是按照字符为单位进行读写的,每个字符通常占用两个字节。Java...

    Node.js-get-stream-将流作为字符串缓冲区或数组

    `get-stream`库提供了一种简洁的方法,将流数据转换为字符串、缓冲区(Buffer)或者数组,使得对流数据的处理变得更加方便。这个库由Sindre Sorhus创建,他在Node.js社区以其高质量的开源工具而闻名。 首先,让我们...

Global site tag (gtag.js) - Google Analytics