Pragma mark — NO.1 基本概念
public class Main {
public static void main(String[] args) {
Demo d = new Demo();
d.method();
//Inter i = new Inter();接口是不能实例化的
//因为接口中所有方法都是抽象方法,如果可以实例化接口的话
//就可以调用抽象方法,调用抽象方法是无意义的
//按照多态的方式实例化
Inter i = new Demo();//父类引用指向子类对象
i.method();//编译看左边,运行看右边
//接口是用来实现的,不是用来继承的,但其实也是一个父类
}
}
/*
* A:接口概述:
* 从狭义的角度讲就是指java中的interface
* 从广义的角度讲对外提供规则的都是接口
* B:接口特点:
* a:接口用关键字interface表示
* interface 接口名 {}
*
* b:类实现接口用implements表示
* class 类名 implements 接口名 {}
*
* c:接口不能实例化
* 那么,接口如何实例化?
* 按照多态的方式来实例化。
*
* d:接口的子类
* 可以是抽象类,但意义不大
* 可以是具体类,要重写接口中的所有抽象方法(推荐)
**/
//定义一个接口
interface Inter {
//接口中的方法都是抽象的
public abstract void method();
}
//类实现接口
class Demo implements Inter {
//类继承自接口,也要重写这个接口中的抽象方法
public void method(){
System.out.println("类实现接口");
}
Pragma mark — NO.2 接口的成员特点
public class Jiekoulei1 {
public static void main (String[] args){
Demo1 d = new Demo1();
d.print();
}
}
/*
* 成员变量:只能是常量,并且是静态公共的
* 默认修饰符:public static final
* 建议:修饰符自己手动给出
*
* 构造方法:接口没有构造方法
* 成员方法:只能是抽象方法
* 默认修饰符:public abstract
* 建议:自己手动给出
**/
//接口
interface Inter1 {
//接口中定义的变量都是常量,即使你不加这个final,自动加上的,
// 所以在实现类中不能去修改值
//默认修饰成员变量的修饰符有三个哦
int num = 10;
//public Inter1 (){}接口中没有构造方法
//public void method(){}:接口中不能定义非抽象方法
}
//类实现接口
class Demo1 implements Inter1 {
public void print(){
//我们可以拿到接口中定义的成员变量,但是我们无法修改其中的值
// num = 20;
System.out.println(num);
}
//对于Demo1来说,有自己的构造方法,但是为什么Inte1没有呢
public Demo1 (){
super();//这个super并不是调用的Inter1中的构造,因为本身也没有
//而是调用的Object的构造,因为我们Demo1类实际上是继承自Object的
}
}
Pragma mark — NO.3 类与类/类与接口/接口与接口
public class Jiekoulei2 {
public static void main (String[] args){
Test t = new Test();
t.printA();
t.printB();
t.printC();
}
}
/*
A:类与类:
继承关系
只能单继承,可以多层继承
B:类与接口
实现关系,可以单实现,也可以多实现
并且还可以在继承的同时,实现多个接口
C:接口与接口
继承关系,可以单继承,也可以多继承
* */
//写几个接口
interface InterA {
public void printA();
}
interface InterB {
public void printB();
}
interface InterC {
public void printC();
}
//接口和接口之间是继承关系并且可以多继承
interface InterD extends InterB, InterC{
}
//类来实现接口
class Test implements InterA, InterB, InterC {
public void printA(){
System.out.println("这是A接口中的方法");
}
public void printB(){
System.out.println("这是B接口中的方法");
}
public void printC(){
System.out.println("这是C接口中的方法");
}
}