爱程序网

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");
    }
   
}
复制代码

 

关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助