栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java基础】第三章 接口(超级有助于理解,初学者必看!)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java基础】第三章 接口(超级有助于理解,初学者必看!)

第三章 接口(超级有助于理解)

第二章我们看完了类和对象的概念,知道类其实是对于对象的一种抽象。回想我们过去的生活,我们会发现很多不同类的事物,会有着相同的行为,比如猫、狗和人类都会吃东西。那么是不是说我们可以定义一个吃东西的动作,再针对具体不同的动物,在这个动作里面加入特定的其他属性呢?这样是不是就把这个动作抽象出来了?感觉很规范,利于后期的修改呢?在Java里面,这种抽象的方法,由接口来实现。为了更好的理解,我们先写一个例子,在例子后面给出基础的语法。

文章目录
  • 第三章 接口(超级有助于理解)
    • 一个例子
      • 首先,我们先写一个学生的接口
      • 接着,我们写下WangStudent这类学生有什么特点
      • 最后,我们写这一类学生的类
      • 几个很关键的步骤说明
      • 一张图来直观的了解一下这个过程
    • 基础语法

一个例子

我们会在人生的某个阶段作为学生,但是学生并不是我们作为人的本质,只是一套行为和属性的集合而已。现在假设Student具有三个特点,这三个特点是TakeExam()、TakeClass()和ArrangeSpareTime()。我们有很多种不同的学生的特点,假设现在我们有一类学生叫做Wangxiaobo,他们是一类自由的学生,有WangStudent的特点,那么对于具体的这一类学生,我们怎么用接口的思想实现呢?

首先,我们先写一个学生的接口
package com.cjx1005;

public interface Student {
	String feature = "大有可为";
    public void TakeExam();
    public void TakeClass();
    public void ArrangeSpareTime();
}

//是不是很抽象嘻嘻

接着,我们写下WangStudent这类学生有什么特点
package com.cjx1005;

public class WangStudent implements Student{

	@Override
	public void TakeExam() {
		// TODO Auto-generated method stub
		System.out.println("我很喜欢考试,但是我不在意分数。因为考试有助于我们检测自己学习的情况,帮助我们更好的学习。");
	}

	@Override
	public void TakeClass() {
		// TODO Auto-generated method stub
		System.out.println("我喜欢数学、计算机、经济学和文学类的课程");
	}

	@Override
	public void ArrangeSpareTime() {
		// TODO Auto-generated method stub
		System.out.println("空闲时间我喜欢学习和完成自己的兴趣爱好");
	}
}

最后,我们写这一类学生的类
package com.cjx1005;

public class Wangxiaobo {
	public int age;
	public int rank;
	public int gender; //0代表女生,1代表男生
	Student studentIdentity;

	public void Excercise(String habit) {
		System.out.println("我最喜欢的锻炼是"+habit);
	}
	
	public void Writing(String author) {
		System.out.println("我喜欢写作,我最喜欢的作家是"+author);
	}
	
	public void StudentIdet(Student student){
		this.studentIdentity = student;
	}
	
	public void TakeExam() {
		studentIdentity.TakeExam();
	}
	
	public void TakeClass() {
		studentIdentity.TakeClass();
	}
	public void ArrangeSpareTime() {
		studentIdentity.ArrangeSpareTime();
	}
	public  static void main(String[] args){
		Wangxiaobo lilei = new Wangxiaobo();
		WangStudent freedom = new WangStudent();
		lilei.StudentIdet(freedom);
		lilei.Excercise("篮球");
		lilei.Writing("村上春树");
		lilei.TakeExam();
		lilei.TakeClass();
		lilei.ArrangeSpareTime();
	}
}

我们看看最后的输出结果

我最喜欢的锻炼是篮球
我喜欢写作,我最喜欢的作家是村上春树
我很喜欢考试,但是我不在意分数。因为考试有助于我们检测自己学习的情况,帮助我们更好的学习。
我喜欢数学、计算机、经济学和文学类的课程
空闲时间我喜欢学习和完成自己的兴趣爱好
几个很关键的步骤说明

在具体的类里面,需要传入具体的方式
就是这几行代码实现的

public void StudentIdet(Student student){
		this.studentIdentity = student;
	}
	
	public void TakeExam() {
		studentIdentity.TakeExam();
	}
	
	public void TakeClass() {
		studentIdentity.TakeClass();
	}
	public void ArrangeSpareTime() {
		studentIdentity.ArrangeSpareTime();
	}

这样,Wangxiaobo这个类的TakeExam()、TakeExam()和ArrangeSpareTime()的三个方法就是用的this.studentIdentity的了,而this.studentIdentity是根据外面的student传入的,而student的具体方法的书写其实是由WangStudent()来具体完成的。(如下)

WangStudent freedom = new WangStudent();
		lilei.StudentIdet(freedom);
一张图来直观的了解一下这个过程

基础语法

接口的基础语法

public interface 接口名{
 // 属性 默认由 final,static 修饰 - 静态常量 
 // 方法 没有方法体-抽象方法  默认 abstract 修饰
  // 属性 必须初始化,默认由 final,static 修饰
    String  name="namea";
    static final int num = 3;

    // 方法 - 没有方法体-抽象方法  默认 abstract 修饰
    public abstract void test();
}

对于具体的接口,用一种改写的思维进行具体的书写
关键词是implements,里面的重写检查注解就用@Override

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/294106.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号