接口与抽象类小练习

/*
继承中接口与抽象类练习:

乒乓球运动员和篮球运动员
乒乓球教练和篮球教练。
为了出国交流,乒乓球相关人员都需要学习英语

分析:
    乒乓球运动员:属性: 姓名,年龄,技能: 打乒乓球
    篮球运动员: 属性: 姓名年龄, 技能: 打篮球
    乒乓球教练: 属性: 姓名,年龄, 技能: 教练乒乓球
    篮球教练:    属性: 姓名,年龄         技能: 教练 篮球

    运动员抽象类: 属性: 姓名,年龄, 方法: 打球
    教练抽象类: 属性: 姓名年龄, 方法: 教练
    接口: 学习英语

实现:
    接口: 学习英语
    运动员抽象类: 属性: 姓名,年龄, 方法: 打球
    教练抽象类: 属性: 姓名年龄, 方法: 教练

    乒乓球运动员: 继承 接口与运动员抽象类
    篮球运动员: 继承运动员抽象类

 */

//学习英语接口
interface  LearnEnglish
{
    public abstract void learn();
}

//运动员类
abstract class Sporter
{
    private String name;
    private int age;

    //构造方法
    Sporter(){}
    Sporter(String name, int age){
        this.name = name ;
        this.age = age;
    }

    public abstract void play();
}

abstract class Trainer
{
    private int age;
    private String name;

    //构造方法
    Trainer(){}
    Trainer(String name, int age){
        this.name = name;
        this.age = age;
    }

    public abstract void train();
}

//乒乓球运动员
class PingPenPlayer extends Sporter implements LearnEnglish
{
    PingPenPlayer(String name, int age){
        super(name, age);
    }

    public void play(){
        System.out.println("pingpeng plays ");
    }

    public void learn(){
        System.out.println("learn english");
    }
}

class BasketballPlayer extends Sporter
{
    BasketballPlayer(String name, int age){
        super(name,age);
    }

    //方法重写
    public void play(){
        System.out.println("play basketballl");
    }
}

class PingPenTrainer extends Trainer implements LearnEnglish
{
    PingPenTrainer(String name, int age){
        super(name, age);
    }

    //抽象教练父类方法
    public void train(){
        System.out.println("pingpeng train ");
    }

    //c重写学习英语接口方法
    public void learn(){
        System.out.println("  trainer learn english");
    }
}

class BasketballTrainer extends Trainer
{
    BasketballTrainer(String name, int age){
        super(name, age);
    }

    //抽象教练父类方法

    public void train(){
        System.out.println("BasketballTrainer train");
    }
}

public class InterfaceDemo
{
    public static void main(String[] args){
        //乒乓球运动员
        Sporter pingpeng = new PingPenPlayer("张继科", 30);
        pingpeng.play();
    }
}
 

原文地址:https://www.cnblogs.com/yu-zhi/p/9404446.html

时间: 2024-10-19 13:23:07

接口与抽象类小练习的相关文章

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

C#中接口和抽象类的区别

什么是接口? 用来定义一种程序的协定.实现接口的类或者结构要与接口的定义严格一致.有了这个协定,就可以抛开编程语言的限制(理论上).C#接口可以从多个基接口继承,而类或结构可以实现多个接口.C#接口可以包含方法.属性.事件和索引器.接口本身不提供它所定义的成员的实现.接口只指定实现该接口的类或接口必须提供的成员. 如何使用接口? 例如: <span style="font-family:KaiTi_GB2312;">using System; using System.Co

[Think In Java]基础拾遗1 - 对象初始化、垃圾回收器、继承、组合、代理、接口、抽象类

目录 第一章 对象导论第二章 一切都是对象第三章 操作符第四章 控制执行流程第五章 初始化与清理第六章 访问权限控制第七章 复用类第九章 接口 第一章 对象导论 1. 对象的数据位于何处? 有两种方式在内存中存放对象: (1)为了追求最大的执行速度,对象的存储空间和生命周期可以在编写程序时确定,这可以通过将对象置于堆栈或者静态存储区域内来实现.这种方式牺牲了灵活性. (2)在被称为堆的内存池中动态地创建对象.在这种方式,知道运行时才知道对象需要多少对象,它们的生命周期如何,以及它们的具体类型.

接口和抽象类:Interface、abstract _【转】

一.接口 接口是C#中很常见的工具,概念什么的就不说了,这里讲几个值得注意的小地方: 1.接口内部只能有函数.属性和事件的声明: interface IParent { void Show(); string Type { get; set; } event AddChildren Add; } 在接口中声明的成员都不需要访问修饰符(public,private等),因为接口成员的权限默认都是public,另外值得注意的是接口中之所以能够声明事件是因为事件就是委托的特殊属性. 接口不能是静态的,

Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类?

Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类? 2013-01-05 17:16:09|  分类: JAVA |  标签:java  |举报|字号 订阅 下面比较一下两者的语法区别:1.抽象类可以有构造方法,接口中不能有构造方法.2.抽象类中可以有普通成员变量,接口中没有普通成员变量3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法.4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclips

从接口、抽象类到工厂模式再到JVM来总结一些问题

俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 Java的Class.forName(xxx); Java里创建对象的几个方式总结 Java类加载机制总结 Java WEB的三层架构和MVC的关系 工厂方法模式总结 抽象工厂模式总结 一道面试题的分析 一个服务提供者框架的学习 接口的另一常用法:策略模式 参考资料 先看这样一个场景:某个果园里现在有

2/接口与抽象类区别

1//. 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况.不能创建abstract 类的实例.然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例.不能有抽象构造函数或抽象静态方法.Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为.取而代之,在子类中实现该方法.知道其行为的其它类可以在类中实现这些方法.接口(interface)是抽

浅谈接口、抽象类、抽象方法和虚方法的区别

C#抽象类和接口孩子间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于抽象类和接口的选择显得比较随意.其实,两者之间还是有很大区别的. 首先说一下接口与抽象类的异同: 相同点: 1.他们都不能实例化自己,也就是说都是用来被继承的. 2.抽象类中的抽象方法和接口方法一样,都不能有方法体 不同点: 1.抽象类里可以有字段,接口中不能有字段. 2.抽象类中的普通方法可以有方法体,而接口方法没有方法体. 3.接口中的方法不能有访问修饰符,抽象类中的抽象方

从人类社会的角度看OO社会中的类、接口、抽象类

引言 在OO的工作中,我们一定会涉及到类,抽象类和接口.那么类和抽象类以及接口到底扮演的什么角色? 本文主要是从人类社会的角度阐述类与抽象类以及接口的“社会”关系,从而让我们抛弃书上的那些死记硬背的概念,快速理解他们的区别与联系? 如果大家觉得还有必要把这块更新的更好,还请多多反馈. 如果觉的对您有用还请点击 “推荐”下,我会持续更新更多新的内容. 古老的传说 相传盘古开天劈地后,女娲一天在黄河边梳头时,突发奇想以泥土仿照自己抟土造人,创造并构建人类社会.后来又替人类立下了婚姻制度,经过一代又一