接口
-
普通类:只有具体方法
-
抽象类:具体实现和规范(抽象方法)都有!
-
接口: 只有规范! 自己无法写方法~专业的约束! 约束和实现的分离:面向接口编程!
-
接口就是规范,定义的是一组规则,“如果你是....则必须能.....”思想
-
接口的本质是规范
-
是面向对象的精髓,是对对象的抽象,最能体现的这一点的就是接口
-
声明类的关键字:class , 声明接口的关键字是:interface
接口的作用
-
约束
-
定义一些方法 让不同的人实现
-
public abstract
-
public static final
-
接口不能实例化 接口中没有构造方法
-
implements可以实现多个接口
-
必须要重写接口中的方法
例题
首先创建一个接口,并定义方法
package opp.demo09; //interface 关键字 接口都需要有实现类 public interface UserService { //定义的属性 public static final int age =99; //接口中的所有定义的方法其实都是抽象的 public abstract void add(String name); void delete(String name); void update(String name); void query(String name); }
然后在新类中继承实现
package opp.demo09; //抽象类: extends //类 可以实现接口 implement 接口 //实现接口的类 就需要重写接口中的方法 //多继承 利用接口实现多继承 public class UserServiceImpl implements UserService,TimeService{ @Override public void add(String name) { } @Override public void delete(String name) { } @Override public void update(String name) { } @Override public void query(String name) { } @Override public void timer() { } }
内部类
-
内部类就是在一个类的内部定义一个类:比如 在A类中定义B类 那么相对A类来说就称为内部类
而A类相当B类来说就是外部类
-
成员内部类
package opp.demo10; //成员内部类 public class Outer { private int id = 10; public void out(){ System.out.println("这是外部类的方法"); } public class Inner{ // public static class Inner 静态内部类 public void in(){ System.out.println("这是内部类的方法"); } //获得外部类的私有属性 public void getID(){ System.out.println(id); } } } /* package opp; import opp.demo10.Outer; public class Application03 { public static void main(String[] args) { Outer outer = new Outer(); //通过这个外部类来实例化内部类 Outer.Inner inner = outer.new Inner(); inner.in(); inner.getID(); } } */
-
静态内部类
package opp.demo10; //静态内部类 public class Outer01 { private int id = 10; public void out(){ System.out.println("这是外部类的方法"); } public class Inner{ // public static class Inner 静态内部类 public void in() { System.out.println("这是内部类的方法"); } } } /* package opp; import opp.demo10.Outer; public class Application03 { public static void main(String[] args) { Outer outer = new Outer(); } } */
-
局部内部类
package opp.demo10; //匿名内部类 public class Outer02 { //局部内部类 class Inner{ public void in(){ } } }
-
匿名内部类