java 抽象类、接口、内部类

 一、抽象类

抽象类不能实例化,

抽象类中可以包含不带方法体的方法,可以有带方法体的方法。

抽象类中不带方法体的方法,子类继承后必须要重写,

 抽象类可以有构造方法

public abstract class Person {
    //抽象方法
    public abstract void say();

    public  void ok(){
        System.out.println("普通方法");
    }
}

 

public class Student extends Person  {
    @Override
    public void say() {
        System.out.println("student-say");
    }
}

 

二、接口

1.一般

接口的方法默认是公有的抽象方法,不能带方法体

 完全版

public interface Person {
    public abstract void say();
}

可以简写

public interface Person {
    void say();
}

实现时必须要覆盖所有的抽象方法

public class Student implements  Person  {
    @Override
    public void say() {
        System.out.println("student-say");
    }
}

 

2.java7增加常量

 常量是静态的

public interface Person {
    public static final int A = 10;
}

简写

public interface Person {
    int A = 10;
}

调用

public class Test {
    public static void main(String[] args) {
        System.out.println(Person.A);
    }
}

 

3.java8接口默认方法和静态方法

接口的默认方法,子类可以不重写

public interface Person {
    //默认是public的可以不加
    default void say() {
        System.out.printf("person-say");
    }
}
public class Student implements  Person  {

}
---------------
public class Test {
    public static void main(String[] args) {
        Student p=new Student() ;
        p.say();
    }
}

 

静态方法

子类可以重写,调用时不实例化

public interface Person {
    static void say() {
        System.out.printf("person-say");
    }
}
------------------------
public class Test {
    public static void main(String[] args) {
        Person.say();
    }
}

 

 

4.java9接口私有方法

 接口私有方法只能在本接口中使用

public interface Person {
    default void say() {
        System.out.println("person-say");
        ok();
    }
    private void ok(){
        System.out.println("aa");
    }
}
----------------
public class Student implements  Person  {

}
--------------------
public class Test {
    public static void main(String[] args) {
        Student p=new Student() ;
        p.say();
    }
}

 

三、内部类

 

posted @ 2018-06-14 14:48  富坚老贼  阅读(95)  评论(0编辑  收藏  举报