宠物类例题

public class Person {
     private String name;
     private Pet pet;

     public Person() {}
     public Person(String name,Pet pet){
         this.name=name;
         this.pet=pet;
     }
     public void petHappy(){
         pet.scream();
     }
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }

}
public abstract class Pet {
    private String pname;

    public Pet(){}
    public Pet(String pname){
        this.pname = pname;
    }
    public abstract void scream();/*{
        System.out.println("宠物的叫声");
    }*/

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }
}
public class Tiger extends Pet{
    public String fur;

    public Tiger(String fur,String name) {
        super(name);
        this.fur = fur;
    }

    public Tiger() {
        super();

    }

    @Override
    public void scream() {
        System.out.println("这是一只老虎的叫声");
    }

    public String getFur() {
        return fur;
    }

    public void setFur(String fur) {
        this.fur = fur;
    }

}
public class Main {
    public static void main(String[] args){
        Tiger t1 =new Tiger();
        Rabbit t2 = new Rabbit();

        Person p1 = new Person("小明",t1);
        Person p2 = new Person("小红",t2);
        p1.petHappy();
        p2.petHappy();
    }
}
时间: 2024-11-02 13:21:11

宠物类例题的相关文章

string类例题

//string a = "aldsfdh"; ////bool q = a.Contains("dd");//是否包含此字符串 //int o = a.IndexOf("h"); //Console.WriteLine(o); ////int p = a.LastIndexOf("d"); ////Console.WriteLine(p); //int b = a.Length;//长度 //Console.WriteLin

完善类例题3.2

package mydate; public class mydate { private int year,month,day;private static int thisYear; static {thisYear=2014;}public mydate(int year,int month,int day){ this.set(year,month,day);}public mydate(){ this(1970,1,1);}public mydate(mydate d){ this.s

2015_1_28_IO与常用类

/*日志名格式  年_月_日_内容 如2015_1_28_IO与常用类*/ ************************************************************************************************************************************************************** 日期:2015年1月 28日 主题:IO .常用类 相关文件夹:oracle/相关课件/第12章_Java

C# 深拷贝

关于C#的深拷贝的实现方式: ①反射 ②反序列化 ③表达式树 目前只讲解利用反射实现C#深拷贝的方法: 深拷贝工具类: using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; namespace CopyDemo {     public sealed class CopyTools     {         public sta

java基础知识总结(1)

定义类: 访问修饰符 class 类名{ } 访问修饰符如:public .priate是可选的 class是声明类的关键字 按照命名规范,类名首字母大写 例:创建“人”类,关键代码: public class Person{ } ********************************************************** 定义属性: 访问修饰符 数据类型 属性名: 访问修饰符士可选的 除了访问修饰符之外,其他的语法和声明变量是一致的 例:创建“人”类,名为“人”类添加相

面向对象设计原则三:里氏替换原则(LSP)

里氏替换原则(LSP)定义:在任何父类出现的地方都可以用它的子类类替换,且不影响功能.解释说明:其实LSP是对开闭原则的一个扩展,在OO思想中,我们知道对象是由一系列的状态和行为组成的,里氏替换原则说的就是在一个继承体系中,对象应该具有共同的外在特性,使用LSP时,如果想让我们的程序达到一个父类出现的地方都可以用它的子类来替换且不影响功能,那么这个父类也应该尽量声明出子类所需要的一些公共的方法,父类被子类替换之后,会比较顺利,那么为什么说它是对开闭原则的一个扩展呢?因为我们在开闭原则中说尽量使用

Swift中协议的简单介绍

熟悉objective-c语言的同学们肯定对协议都不陌生,在Swift中苹果将 protocol 这种语法发扬的更加深入和彻底.Swift语言中的 protocol 不仅能定义方法还能定义属性,配合 extension 扩展的使用还能提供一些方法的默认实现,而且不仅类可以遵循协议,现在的枚举和结构体也能遵循协议了.基于此本文从 1,协议中定义属性和方法 , 2,协议的继承.聚合.关联类型 , 3,协议的扩展 , 4,Swift标准库中常见的协议 , 5,为什么要使用协议 5个方面结合自身的学习经

java中面向对象的一些知识(一)

一:基本概念 举例:写一个程序,实现如下功能: 一群宠物,宠物有各种类型,如猫.狗.企鹅等 让这群宠物,按照各自的能力不同,进行各种比赛(如爬树.游泳.跳水):扩展性需求: 游泳比赛游泳池的参数.飞盘的大小和重量等 1.首先从里面抽象出名词性的概念(需求分析,抽取概念模型) 宠物.猫.狗.企鹅.比赛.能力.宠物类型 2. 把名词抽象成相应的class,或class的属性 3.提取动词 -------------------- 把这些动词,抽象成对象的行为 爬树.游泳.跳水 类和对象的关系: 类是

Java之面向对象例子(二)

定义一个Book类,在定义一个JavaBook类继承他 //book类 package com.hanqi.maya.model; public class Book { public String name; public int no; public Book(){ } public Book(String name1,int no1){ name =name1; no=no1; } public String show(){ return "书名是:"+name+",&