普通类:只有具体实现
抽象类:具体实现和规范都有
接口:只有规范
接口就是规范,定义的是一组规则
接口的本质是契约
UsersService.java //锻炼抽象的思维 //不能定义方法 public interface UsersService { //接口中的所有定义都是抽象的 默认是 public abstract //接口中定义的属性,默认都是常量 public static final int AGE = 99; void add(String name); void delete(String name); void modify(String name); void query(String name); }
TimeService.java public interface TimeService { void timer(); }
USersServiceImpl.java //类 可以实现接口 implements //实现接口的类,需要重写接口中的方法 //利用接口实现多继承 public class UsersServiceImpl implements UsersService,TimeService{ @Override public void add(String name) { } @Override public void delete(String name) { } @Override public void modify(String name) { } @Override public void query(String name) { } @Override public void timer() { } }
Note
内部类就是在一个类的内部再定义一个类
Outer.java
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 Inner2{ //首先加载,所以静态内部类,没办法调用外部非静态属性了 public void in(){ System.out.println("这是内部类的方法"); } //获得外部类的私有属性 public void getID(){ //System.out.println(id); } } public void method(){ class Inner3{ //局部内部类 public void in(){ } } } } //一个java文件中只能有一个 public类,但是可以有多个class class A{ public static void main(String[] args) { } }
Test.java
//思想上的升华,用程序的思维 public class Test { public static void main(String[] args) { //没有名字初始化类 new Apple().eat(); //匿名对象的使用,不用将实例保存到变量中 new UsersService(){ @Override public void hello() { } }; } } class Apple{ public void eat(){ System.out.println("eat"); } } interface UsersService{ void hello(); }
Application.java
import com.oop.demo10.Outer; public class Application { public static void main(String[] args) { Outer outer = new Outer(); //通过外部类来实例化内部类 Outer.Inner inner = outer.new Inner(); inner.in(); inner.getID(); } }