`

一阶段-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 中的一种流类型,它可以提高读写效率。字节缓冲流可以分为字节缓冲输出流和字节缓冲输入流两种。字节缓冲输出流可以将数据写入到文件中,而字节缓冲输入流可以从文件中...

    Java字符流与字节流区别

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

    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. **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社区以其高质量的开源工具而闻名。 首先,让我们...

    python-剑指offer第54题字符流中第一个不重复的字符

    python python_剑指offer第54题字符流中第一个不重复的字符

    day21_缓冲流、转换流、序列化流、Commons IO.pdf

    缓冲流分为字节缓冲流和字符缓冲流两大类,分别是`BufferedInputStream`和`BufferedOutputStream`(处理字节流)以及`BufferedReader`和`BufferedWriter`(处理字符流)。缓冲流的主要作用在于减少对系统I/O操作的...

Global site tag (gtag.js) - Google Analytics