zoukankan      html  css  js  c++  java
  • JAVA学习经验--总结JAVA抽象类和接口

    * --总结JAVA抽象类和接口
     * 1.抽象类:
     *             1》抽象类可以修饰方法,修饰类,但不能修饰属性,不能被实例化
     *             2》抽象类可以被继承,只能是单继承,继承抽象类必须实现抽象方法
     *             3》抽象类不能被static ,fina,private一起修饰
     *             4》抽象类是有多态性的
     *
     * 2.接口:
     *             1》接口是一种特殊的抽象类,不能被实例化
     *             2》接口申明的属性默认关键字为public abstract static
     *             3》接口申明的方法默认关键字为 public abstract
     *             4》接口是可以被继承的,接口可以被继承多个,也可已继承多个
     *             5》接口是有多态的
     *

    package come.java.zhangfan.test3;
    
    public class Test  {
        public static void main(String[] args) {
            Students s =new Students();
            t1(s);//输出 ---    woshi Student
           
            T  t =new T();
            t(t);
        }
        //抽象类的多态性
        public static void t1(Person p ){
            p.T();
        }
       
        //接口的多态性
        public static void t(Runner p){
            p.run();//输出 - -- woshi Run
        }
    }
    
    //抽象类的应用
    //申明抽象类
    abstract class Person{
    //    字段 i 的修饰符不合法;只允许使用“公用”、“受保护”、“私有”、“静态”、“终态”、“瞬态”或“易变”
    //    属性无法被覆盖
    //    abstract int i ;
       
    //    类型 Person 中的抽象方法 T 只能设置可视性修饰符“公用”或“受保护”中的一个
    //    如果static 那么意味着可以不创建对象直接调用该方法,与abstact 冲突
    //    abstract static public void T();
       
    //    类型 Person 中的抽象方法 T 只能设置可视性修饰符“公用”或“受保护”中的一个
    //    本身就冲突,不解释
    //    abstract final public void T();
       
    //    类型 Person 中的抽象方法 T 只能设置可视性修饰符“公用”或“受保护”中的一个
    //    私有方法无法被覆盖
    //    abstract private void T();
       
       
        abstract public void T();    //True
    }
    //申明一个Student类继承抽象类,并重写T方法
    class Students extends Person{
        public void T(){
            System.out.println("woshi Student");
        }
    }
    
    
    //接口的应用
    interface Runner{
        public abstract void run();
    }
    interface Swimmer{
        void swim();
    }
    interface Flier {
        void fly();
    }
    //接口可以多继承
    interface t extends Runner,Swimmer,Flier{
       
    }
    //必须申明所有继承的方法
    class t1 implements t{
    
        @Override
        public void run() {
            // TODO 自动生成的方法存根
           
        }
    
        @Override
        public void swim() {
            // TODO 自动生成的方法存根
           
        }
    
        @Override
        public void fly() {
            // TODO 自动生成的方法存根
           
        }
       
    }
    
    //接口可以多引用//必须申明所有继承的方法
    class T implements Flier,Runner,Swimmer{
    
        @Override
        public void fly() {
            // TODO 自动生成的方法存根
            System.out.println("woshi fly");
        }
    
        @Override
        public void swim() {
            // TODO 自动生成的方法存根
            System.out.println("woshi Swim");
        }
    
        @Override
        public void run() {
            // TODO 自动生成的方法存根
            System.out.println("woshi Run");
        }
       
    }
  • 相关阅读:
    触发器心得
    心得:上下游企业的各自特点和出路
    MySQL 触发器例子(两张表同步增加和删除)
    JQuery动态隐藏和显示DIV
    MySQL 触发器例子(下订单自动减少库存)
    Step By Step(Lua目录)
    客户端服务端
    C#多线程1
    GFS架构分析
    一个简单的Windows Socket可复用框架
  • 原文地址:https://www.cnblogs.com/zhangfan94/p/zhangfan94.html
Copyright © 2011-2022 走看看