/*
* 1.抽象类:抽象类中可以有 普通方法啊和抽象方法(0-n个)。
* 2.当一个抽象类中全部都是抽象方法的时候,这个类 变成了一个 接口!
* 3.表面上看,接口是一个特殊的抽象类,但是类是类,接口是接口 ,是并列的关系! (接口不属于类,接口没有构造器)
* 4.创建接口方式:(1)把class改成interface (2)右键–创建—interface
* 5.接口中包含什么? 1.常量 2.抽象方法
* 6.常量 ,抽象方法 前 有固定的修饰符:(必须)
* 常量:public static final
* 抽象方法:public abstract
* 假如你没有写全,系统会默认给你补全
* 7.接口用途:定义规则。
* 8.一个类,可以实现一个接口,用implements关键词 ,一旦实现接口,就要实现(重写)全部的抽象方法!
* 9.假如实现类没有实现全部的抽象方法呢?那么这个实现类 就变成了 抽象类!
* 10.java中只有单继承! Student extends Person,Animal—错误的写法
* 11.java中可以有实现,实现多个接口,就全部实现抽象方法即可!
* 12.单继承,多实现—为啥啊??(自己思考一下)
* 13.可以又继承又实现吗?可以 语法只能:Student extends Person implements Test,Demo(先继承,后实现!必须这样写!)
*
代码演示:
public interface Test { //创建接口
int NUM = 10; // public static final int NUM=10;
void eat(String name); //省略了public abstract,但系统默认补全
void study();
void sleep(int age);
}
// 接口的实现类
class Student implements Test, Demo { //多实现-->实现多个接口,但要实现(重写)全部的抽象类
@Override
public void eat(String name) {
System.out.println("我们都要吃饭...");
}
@Override
public void study() {
System.out.println("我们要好好学习");
}
@Override
public void sleep(int age) {
System.out.println("我们没有睡觉8小时...");
}
@Override
public void say() {
// TODO Auto-generated method stub
}
@Override
public String cook() {
// TODO Auto-generated method stub
return null;
}
}
interface Demo { //接口,有两个抽象方法
void say();
String cook();
}
class T { //测试类
//main方法要是没在public修饰的类中的时候,要用run as===》run configurations配置
public static void main(String[] args) {
//接口不能创建对象
//Test t=new Test(); 写法错误
Test t=new Student();
//如何访问到接口中的常量NUM
System.out.println(t.NUM);
System.out.println(Student.NUM);
System.out.println(Test.NUM);
Student s=new Student();
System.out.println(s.NUM);
System.out.println(new Student().NUM);
//原因:常量前面是public static final
}
}