Java_总结八(抽象类与接口)

一、抽象类

  抽象类的定义及使用规则:

    --包含一个抽象方法的类必须是抽象类

    --抽象类和抽象方法都要使用 abstract 关键字声明

    --抽象方法只需声明而不需要实现

    --子类继承抽象类,子类(如果不是抽象类)必须重写抽象类中的全部抽象方法

 

  抽象类的定义格式:

        abstract class 抽象类名称{
            属性;
            
            访问权限 返回值类型 方法名称(参数){            //普通方法
                [return 返回值];
            }
            
            访问权限 abstract 返回值类型 方法名称(参数);    //抽象方法
            //在抽象方法中是没有方法体的
        }
        abstract class K{            //抽象方法不能用final修饰,不然子类无法继承,那抽象类也就没意义了            
            private String name;
            public void a() {        //普通方法
                System.out.println("普通方法");
            }
            public abstract void b(); //抽象方法,抽象方法不要用private去修饰,不然子类无法继承和重写抽象方法,就变成了死方法
        }

 

  类如何继承抽象类: 

        class Y extends K{

            @Override
            public void b() {//继承抽象类,(如果本类不是抽象类)必须实现抽象方法
                System.out.println("我在这里重写了抽象方法");
            }    
        }

 

  注意点:

    (1)抽象类有构造方法

    (2)但是抽象类不能被实例化,因为抽象类的抽象方法没有方法体(有点牵强)

 

二、接口

  --可以理解为一种特殊的类

  --由全局常量公共的抽象方法组成

  --接口中抽象方法必须定义为 public 访问权限(如果不写 public,则默认为 public,而不是default)

 

  接口的定义格式:

        interface 接口名称{
            全局常量;
            公共的抽象方法;
        }
        interface G{
            public static final String NAME = "小明";//全局常量,public static final 可以简化不用写
            public abstract void print();//公共的抽象方法,public abstract 可以简化不写
            public abstract String getInfo();//公共的抽象方法
        }

 

 

  普通类如何实现接口:(类可以一次实现多个接口)

        interface G{
            public abstract void print();
        }
        interface J{
            public abstract void getInfo();
        }

        class H implements G,J{

            @Override
            public void getInfo() {        //实现J接口的方法
                // TODO Auto-generated method stub
                
            }

            @Override
            public void print() {        //实现G接口的方法        
                // TODO Auto-generated method stub
                
            }

        }

 

 

 

  抽象方法实现接口:

        interface G{
            public abstract void print();
        }
        interface J{
            public abstract void getInfo();
        }

        abstract class L implements G,J{
            public abstract void b(); //抽象类实现接口不需要重写接口方法
        }

 

  普通类如何继承类又实现接口:(顺序---先继承再实现)

        interface G{
            public abstract void print();
        }
        interface J{
            public abstract void getInfo();
        }
        class P {
            
        }
        class W extends P implements G,J{ //先继承再实现(绝不能先实现再继承)

            @Override
            public void getInfo() {
                // TODO Auto-generated method stub
                
            }

            @Override
            public void print() {
                // TODO Auto-generated method stub
                
            }
            
        }

 

  接口可以继承多个接口:

        interface G{
            public abstract void print();//公共的抽象方法
        }
        interface J{
            public abstract void getInfo();//公共的抽象方法
        }
        interface O extends G,J{
            public abstract void sum();
        }

 

posted @ 2017-05-07 14:58  Java_皮卡丘漏电  阅读(166)  评论(0编辑  收藏  举报