package com.jieko;
/**
*
* 1.接口没有构造器,抽象类可以有构造器
* * 2.接口声明:Interface
* * 3.在JDK8之前,接口中只有两部分内容
* * 常量:固搭格式:public static final
* * 抽象方法:固搭格式:public abstract
* * 4.只要可以通过new关键字创建对象,就会有一个对应的构造器被执行,
* * 但是有构造器不一定能实例化
*
*/
public interface TestInterface {
//变量
public static final int NUM = 10;
//抽象方法
public abstract void a();
interface TestInterface01{
public abstract void b();
}
/**
* 5.类和接口的关系:
* 实现关系 类实现接口
* 6.implements关键字就是实现的意思
* 7.一旦实现一个接口,那么实现类就要重写接口中所有的抽象方法
* 8.如果没有全部重写接口的抽象方法,那么可以将这个实现类定义为抽象类
* 9.java只有单继承,但是有多实现,接口有多继承
* 10.先有继承后有实现,就是继承要在implements前
* 11.接口无法实例化
*/
/*abstract*/ class Student extends Father implements TestInterface,TestInterface01 {
@Override
public void a() {
System.out.println("sjh");
}
public void b(){
System.out.println("45");
}
/**
* 继承:
* 子类对父类的继承
* 实现:
* 类对接口的实现
*/
public static void main(String[] args) {
//接口中的常量如何访问?
TestInterface t = new Student();//接口---》实现类 多态
t.a();
System.out.println(TestInterface.NUM);
System.out.println(Student.NUM);
Student s = new Student();
s.a();
}
/**
* 多态应用场合:
* 1.父类作为方法的形参,传入具体的子类对象
* 2.父类作为方法的返回值类型,返回的是具体的对象
* 3.接口作为方法的形参,传入的是具体的实现类的对象
* 4.接口作为方法的返回值类型,返回的是具体的实现类的对象
*/
}
}
* 在JDK 1.8之后加入了非抽象方法
* 1.public default修饰的非抽象方法
* 2.静态方法
* 注意:
* 1.非抽象方法default修饰符必须要写
* 2.实现类中重写非抽象方法,default修饰符不需要写,否则会出错
* 3.静态方法不能重写