• 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");
        }
       
    }
  • 相关阅读:
    ASP.NET&Spring.NET&NHibernate最佳实践(五)——第3章人事子系统(2)
    项目估算与计划不是一般的难!
    Spring.Net+NHibenate+Asp.Net mvc +ExtJs系列总结(持续更新)
    ASP.NET&Spring.NET&NHibernate最佳实践(四)——第3章人事子系统(1)
    ASP.NET&Spring.NET&NHibernate最佳实践(三)——第2章环境准备
    ASP.NET&Spring.NET&NHibernate最佳实践(六)——第3章人事子系统(3)
    ASP.NET&Spring.NET&NHibernate最佳实践(一)——目录
    Spring工作原理探秘
    ASP.NET&Spring.NET&NHibernate最佳实践(二)——第1章前言
    如何:使用线程池(C# 编程指南《msdn线程池》
  • 原文地址:https://www.cnblogs.com/zhangfan94/p/zhangfan94.html
Copyright © 2020-2023  润新知