java 8-8 接口的练习

  1 /*
  2   老师和学生案例,加入抽烟的额外功能
  3     分析:
  4     老师和学生都具有共同的变量:名字,年龄
  5                     共同的方法:吃饭,睡觉
  6     老师有额外的功能:抽烟(设定个接口),部分抽烟
  7
  8     有共同的变量和方法,设一个父类:person类 抽象类
  9     person类:
 10                名字,年龄
 11                吃饭(); 抽象方法,可重写
 12                睡觉(){};成员方法
 13     子类:
 14     teacher类和teacher类可继承父类。
 15     但,部分老师和学生抽烟,则与抽烟接口进行扩展
 16  */
 17
 18 //设定抽烟接口
 19 //接口的变量是:静态常量最终量;接口没有构造方法,接口的成员方法是:抽象方法
 20 interface Smoking{
 21     //  静态 常量 最终量:public static final int a = 2; 有变量就这样写,这里不需要常量
 22     public abstract void smoking();//抽象方法没有方法体
 23 }
 24
 25 //设定父类:抽象类
 26 abstract class perSon4{
 27
 28     //成员变量
 29     private String name;
 30     private int age;
 31
 32     //构造方法
 33     public perSon4(){}
 34     public perSon4(String name, int age){
 35         this.name = name;
 36         this.age = age;
 37     }
 38     //getXxx、setXxx。
 39     public String getName(){
 40         return name;
 41     }
 42     public void setName(String name){
 43         this.name = name;
 44     }
 45     public int getAge(){
 46         return age;
 47     }
 48     public void setAge(int age){
 49         this.age = age;
 50     }
 51
 52     //抽象方法 吃饭
 53     public abstract void eat();
 54     //成员方法
 55     public void sleep(){
 56         System.out.println("Zzz...");
 57     }
 58 }
 59
 60 //子类  老师类 继承父类
 61 class teacher5 extends perSon4{
 62     //无参构造方法
 63     public teacher5(){}
 64     //有参构造方法
 65     public teacher5(String name,int age){
 66         super(name,age);
 67     }
 68     public void eat() {
 69         System.out.println("下班回去睡觉");
 70     }
 71 }
 72
 73 //子类 学生类 继承父类
 74 class student5 extends perSon4{
 75     //构造方法
 76     public student5(){}
 77     public student5(String name,int age){
 78         super(name,age);
 79     }
 80     public void eat(){
 81         System.out.println("下课回家睡觉");
 82     }
 83 }
 84
 85 //部分老师抽烟,扩展抽烟接口
 86
 87 class SmokTeacher5 extends teacher5 implements Smoking{
 88     //继承了老师类,则把老师类的所有变量方法弄出来:
 89     public SmokTeacher5(){}
 90     public SmokTeacher5(String name,int age){
 91         super(name,age);
 92     }
 93     public void smoking() {
 94         System.out.println("抽烟的老师");
 95     }
 96 }
 97
 98 //部分学生抽烟
 99
100 class SmokStudent5 extends student5 implements Smoking{
101     //继承了学生类,则把学生类的所有变量方法写出来:
102     public SmokStudent5(){}
103     public SmokStudent5(String name,int age){
104         super(name,age);
105     }
106     public void smoking() {
107         System.out.println("抽烟的学生");
108     }
109 }
110
111 //测试类
112
113 class InterfaceTest1 {
114     public static void main(String[] args){
115
116         //测试学生类  直接调用继承了类和扩张了方法的类
117         SmokStudent5 s = new SmokStudent5("张三",20);
118         s.smoking();
119         s.eat();
120         s.sleep();
121
122         System.out.println("---------");
123
124         //测试老师类
125         SmokTeacher5 t = new SmokTeacher5("李四",33);
126         t.smoking();
127         t.eat();
128         t.sleep();
129     }
130 } 
时间: 2024-07-30 13:46:57

java 8-8 接口的练习的相关文章

JavaSE入门学习21:Java面向对象之接口(interface)(二)

一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.java源文件代码: public class Test{ public static void main(String[] args){ //实现接口Singer Singer s1 = new Student("Amy"); s1.sing(); s1.sleep(); s1.study

java的List接口的实现类 ArrayList,LinkedList,Vector 的区别

Java的List接口有3个实现类,分别是ArrayList.LinkedList.Vector,他们用于存放多个元素,维护元素的次序,而且允许元素重复. 3个具体实现类的区别如下: 1. ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制.移动.代价比较高.因此,它

老白的JAVA课程13 接口

之前我们讲到了java4大特征的最后一个抽象的特征,其实在抽象这个特征里面,我们还有一个特征-接口,今天我们就来学一学接口.  用电脑,手机等电子产品来比喻接口,可以更好的理解,比如用符合接口的插头就可以了.  接口具有很好的扩展性,方便.  接口的由来   例子:奥拓奥迪都是汽车,汽车的维护都是可以用调节引擎和更换汽油的方法,那么奥拓和奥迪也都可以:但是有了更多的维护对象以后,比如说大货车,卡车等等,其他的对象不一定需要每一步维护,或者都不需要维护:又比如不同枪支有不同特性的例子.  因此,我

JDK1.8 java.io.Serializable接口详解

java.io.Serializable接口是一个标志性接口,在接口内部没有定义任何属性与方法.只是用于标识此接口的实现类可以被序列化与反序列化.但是它的奥秘并非像它表现的这样简单.现在从以下几个问题入手来考虑. 希望对象的某些属性不参与序列化应该怎么处理? 对象序列化之后,如果类的属性发生了增减那么反序列化时会有什么影响呢? 如果父类没有实现java.io.Serializable接口,子类实现了此接口,那么父类中的属性能被序列化吗? serialVersionUID属性是做什么用的?必须申明

java抽象类和接口

1.抽象类 抽象类在概念上描述的是抽象世界,抽象类刻画了公有行为的特征,并且通过继承机制传送给它的派生类.抽象类使用关键字abstract 修饰,语法如下: abstract class 类名{ 类体; } 抽象方法是指在抽象类中某些成员方法没有具体的实现,只有方法声明.抽象方法使用关键字abstract 修饰,格式如下: public abstract 返回类型 方法名([参数列表]); 抽象类和抽象方法的具体规则如下: 1.用abstract 关键字修饰一个类时,该类叫做抽象类,用abstr

java----数据结构与算法----JavaAPI:java.util.Collection接口

Java API--java.util.Collection接口 /** * @author chen * @date 20170317 * @description:本程序讲述Collection接口 * java.util.Collection * 概述:Collection接口是Set和List接口的父接口,Collection接口中定义了一些 * 用于集合元素操作的方法,被其子接口以及子接口的实现类所继承 * 构造函数 * java中接口不能有构造函数 * 成员函数: * [1]概述,由

java中set接口的用法

java中的set接口有如下的特点: 不允许出现重复元素: 集合中的元素位置无顺序: 有且只有一个值为null的元素. 因为java中的set接口模仿了数学上的set抽象,所以,对应的数学上set的特性为: 互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次. 无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的.集合上可以定义序关系,定义了序关系后,元素之间就可以按照序关系排序.但就集合本身的特性而言,元素之间没有必然的序. 空集的性质:空集是一切集合的子集 S

JAVA学习经验--总结JAVA抽象类和接口

* --总结JAVA抽象类和接口  * 1.抽象类:  *             1>抽象类可以修饰方法,修饰类,但不能修饰属性,不能被实例化  *             2>抽象类可以被继承,只能是单继承,继承抽象类必须实现抽象方法  *             3>抽象类不能被static ,fina,private一起修饰  *             4>抽象类是有多态性的  *  * 2.接口:  *             1>接口是一种特殊的抽象类,不能被实

JavaSE入门学习20:Java面向对象之接口(interface)

一Java接口 接口(英文:interface)是抽象方法和常量值的集合,在Java编程语言中是一个抽象类型,接口通常以interface来声 明.类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些 类里方法的实现细节,它只规定这些类里必须提供某些方法.一个类或接口通过继承接口的方式,从而来继承接口的 抽象方法. 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念.类描述对象的属性和方法.接口则包含 类要实现的方法.除非实现接口的类是抽

java类与接口练习

java类与接口练习--coursera java 课程作业 1.注意代码应该使用题目中所要求的语法要素:2.注意良好的代码风格:3.注意提交整个project,上传压缩后的附件,互评时可被成功执行:4.注意写一个简要的代码说明(请说明使用的IDE等): 编写一个小的程序,其中定义一些接口.类.抽象类,定义它们的成员(字段及方法), 要求使用setter/getter, static, final, abstract,@Override等语法要素,并写一个main函数来使用它们.这些类.接口可以