Java零基础进阶篇之面向对象-接口(行为)

本篇文章讲解的知识点主要围绕面向对象中的接口(行为),废话不多说,只分享Java相关的干货!

接口我们可以看作抽象类的一种特殊情况,在接口中只能定义抽象的方法和常量

1) java 中接口采用 interface 声明

2) 接口中的方法默认都是 public abstract 的,不能更改

3) 接口中的变量默认都是 public static final 类型的,不能更改,所以必须显示的初始

4) 接口不能被实例化,接口中没有构造函数的概念

5) 接口之间可以继承,但接口之间不能实现

6) 接口中的方法只能通过类来实现,通过implements 关键字

7) 如果一个类实现了接口,那么接口中所有的方法必须实现

8) 一类可以实现多个接口

1、接口中的方法默认都是 public abstract 的,不能更改

public class InterfaceTest01 {

public static void main(String[] args) {
}
}

//采用interface 定义接口
//定义功能,没有实现
//实现委托给类实现interface StudentManager {

//正确,默认public abstract 等同 public abstract void addStudent(int id, String name);
public void addStudent(int id, String name);


//正确
//public abstract void addStudent(int id, String name);

//正确,可以加入public 修饰符,此种写法较多
public void delStudent(int id);


//正确,可以加入abstract,这种写法比较少
public abstract void modifyStudent(int id, String name);

//编译错误,因为接口就是让其他人实现
//采用private 就和接口原本的定义产生矛盾了
private String findStudentById(int id);


}

 

2、接口中的变量是 public static final 类型的,不能更改,所以必须显示的初始化

public class InterfaceTest02 {

public static void main(String[] args) {

//不能修改,因为final 的
//StudentManager.YES = "abc";

System.out.println(StudentManager.YES);
}
}


interface StudentManager {

//正确,默认加入public static final String YES = "yes";

//正确, 开发中一般就按照下面的方式进行声明
public static final String NO = "no";

//错误,必须赋值,因为是final 的
//int ON;

//错误,不能采用private  声明
private static final int OFF  = -1;
}

3、接口不能被实例化,接口中没有构造函数的概念

public class InterfaceTest03 {


public static void main(String[] args) {

//接口是抽象类的一种特例,只能定义方法和变量,没有实现
//所以不能实例化
StudentManager studentManager = new StudentManager();
}
}

interface StudentManager {

public void addStudent(int id, String name);
}

 

4、接口之间可以继承,但接口之间不能实现

public class InterfaceTest04 {


public static void main(String[] args) {
}
}


interface inter1 {
public  void method1();

public  void method2();
}

interface inter2 {
public void method3();
}

//接口可以继承
interface inter3 extends inter1 {

public void method4();
}

//接口不能实现接口
//接口只能被类实现
interface inter4 implements inter2 { public void method3();
}

5、如果一个类实现了接口,那么接口中所有的方法必须实现

public class InterfaceTest05 {


public static void main(String[] args) {
//Iter1Impl 实现了Inter1 接口
//所以它是Inter1 类型的产品
//所以可以赋值
Inter1 iter1 = new Iter1Impl(); iter1.method1();

//Iter1Impl123 实现了Inter1 接口
//所以它是Inter1 类型的产品
//所以可以赋值
iter1 = new Iter1Impl123(); iter1.method1();

//可以直接采用Iter1Impl 来声明类型
//这种方式存在问题
//不利于互换,因为面向具体编程了Iter1Impl iter1Impl = new Iter1Impl(); iter1Impl.method1();

//不能直接赋值给iter1Impl
//因为Iter1Impl123 不是Iter1Impl 类型
//iter1Impl = new Iter1Impl123();
//iter1Impl.method1();


}
}


//接口中的方法必须全部实现class Iter1Impl implements Inter1 {

public void method1() { System.out.println("method1");
}


public void method2() { System.out.println("method2");
}


public void method3() {
System.out.println("method3");
}
}


class Iter1Impl123 implements Inter1 {


public void method1() { System.out.println("method1_123");
}


public void method2() { System.out.println("method2_123");
}


public void method3() { System.out.println("method3_123");
}
}


abstract class Iter1Impl456 implements Inter1 {


public void method1() { System.out.println("method1_123");
}


public void method2() 
public abstract void method3();
}



//定义接口interface Inter1 {

public  void method1();


public  void method2();


public  void method3();
}

6、一类可以实现多个接口

public class InterfaceTest06 {

public static void main(String[] args) {

//可以采用Inter1 定义
Inter1 inter1 = new InterImpl(); inter1.method1();

//可以采用Inter1 定义
Inter2 inter2 = new InterImpl(); inter2.method2();
//可以采用Inter1 定义
Inter3 inter3 = new InterImpl(); inter3.method3();
}
}


//实现多个接口,采用逗号隔开
//这样这个类就拥有了多种类型
//等同于现实中的多继承
//所以采用java 中的接口可以实现多继承
//把接口粒度划分细了,主要使功能定义的含义更明确
//可以采用一个大的接口定义所有功能,替代多个小的接口,
//但这样定义功能不明确,粒度太粗了
class InterImpl implements Inter1, Inter2, Inter3 {


public void method1() { System.out.println("----method1	");
}


public void method2() { System.out.println("----method2	");
}


public void method3() { System.out.println("----method3	");
}
}


interface Inter1 {
public void method1();
}


interface Inter2 {


public void method2();
}


interface Inter3 {


public void method3();
}


/*
interface Inter {


public  void method1();


public  void method2();


public  void method3();
}
*/

以上就是接口(行为)相关的知识点了,配套视频教程,正在学习Java的同学们一定要持续关注哦~~

Java零基础进阶视频教程

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(纯干货,Java学习资料,Java学习视频教程,抽象类,java,接口,编程语言,反射)