• 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 } 
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    Redis
    IDEA编码相关,解决yml编码错误导致的 java.nio.charset.MalformedInputException: Input length = 1
    文件上传和下载
    SpringBoot+Mybatis+Postman实现增删改查
    多态与反射
    正则表达式
    原码、反码、补码的用法和理解
    @Conditional & @Profile SpringBoot中自动化配置条件注解。
    Spring Boot 中的 Starter
    第一个项目~千寻在线水果商城
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5860916.html
Copyright © 2020-2023  润新知