对象16:接口的定义与实现
接口:只有规范!自己无法写方法,专业的约束!约束和现实分离:面向接口编程。
声明类的关键字是class,声明接口的关键字是interface
接口的作用
- 约束
- 定义一些方法,让不同的人实现
- public abstract
- public static final
- 接口不能被实例化,接口中没有构造方法
- implements 可以实现多个接口
- 必须要重写接口中的方法
package oop.Demo10; //interface 定义的关键字,接口都需要有实现类 public interface UserService { //常量 int age = 999; //很少用 //接口中所有定义的方法其实都是抽象的 public abstract void add(String name); void delete(String name); void update(String name); void query(String name); }
package oop.Demo10; public interface TimeService { void timer(); }
package oop.Demo10; //类可以实现接口 implements 接口 //快捷键CTRL+i 快速实现方法 //实现了接口的类,就需要重写接口中的方法 //接口实现多继承 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() { } /* 接口的作用 1. 约束 2. 定义一些方法,让不同的人实现 3. public abstract 4. public static final 5. 接口不能被实例化,接口中没有构造方法 6. implements 可以实现多个接口 7. 必须要重写接口中的方法 */ }
对象17:N种内部类
在一个类的内部再定义一个类
package oop; import oop.Demo11.Outer; public class Application { public static void main(String[] args) { // new Outer outer = new Outer(); //通过外部类来实例化内部类 Outer.Inner inner = outer.new Inner(); inner.in(); inner.getID(); } }
一些不怎么推荐的写法
package oop.Demo11; public class Outer { private int id = 10; public void out(){ System.out.println("这是外部类的方法"); } public class Inner{ public void in(){ System.out.println("这是内部类的方法"); } //获得外部类的私有属性 public void getID(){ System.out.println(id); } } /* 静态内部类 public static class Inner{ public void in(){ System.out.println("这是内部类的方法"); } public void getID(){ System.out.println(id); } } } */ //局部内部类 public void method(){ class Inner2{ } } } //一个Java类中可以有多个class类,但是只能有一个public class class A{ }
package oop.Demo11; import org.omg.CORBA.PUBLIC_MEMBER; public class test { public static void main(String[] args) { new Apple().eat(); new UserService(){ @Override public void hello() { } }; } } class Apple{ public void eat(){ System.out.println("1"); } } interface UserService{ void hello(); }