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

【Java】java抽象类抽象方法和接口

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

【Java】java抽象类抽象方法和接口

目录
  • 抽象类的概念和作用
    • 抽象类
    • 抽象方法的特点
    • 抽象类的特点
    • 抽象类被继承实现抽象方法
  • 抽象类应用模板方法模式
    • 定义
    • 意图
    • 例程代码
  • 接口概念和作用
    • 接口语法
    • 接口的特点
    • 接口和抽象类的区别
    • 接口代码实现

抽象类的概念和作用

抽象类

Java中可以定义没有方法体的方法,该方法由子类来具体实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的我们称之为抽象类。

抽象方法的特点
  1. 只有方法头没有方法体
  2. 抽象方法用abstract来修饰
  3. 抽象方法代表一种不确定的操作或行为
  4. 抽象方法不能被调用

抽象类的特点
  1. 定义中含有抽象方法的类叫做抽象类
  2. 抽象类用abstract来修饰
  3. 抽象类代表一种抽象的对象类型
  4. 抽象类不能被实例化
  5. 抽象类中可以有具体方法,可以没有抽象方法

注意:包含有抽象方法的类一定是抽象类,但抽象类不一定有抽象方法

抽象类被继承实现抽象方法
abstract class Demo1
{
	abstract public void printInfo();
	
}

class Demo2 extends Demo1
{

	public void printInfo() {
		// TODO Auto-generated method stub
		System.out.println("被实现的方法");
	}
	
}

//抽象类不能被实例化,必须通过继承实现它的抽象方法
public class Test {
	public static void main(String[] args) {
		Demo2 d = new Demo2();
		d.printInfo();
	} 
}


抽象类应用模板方法模式

定义

一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体行为。

意图

定义了一个操作中的一个算法框架,把一些步骤推迟到子类去实现。模板方法模式让子类不需要改变算法结构。

//模板方法
public void work(){
	//1.授课前准备
	prepared();
	//2.进行授课
	teaching();
	//3.授课结束
	end();
}

例程代码
abstract class Con1
{
	abstract void initUart();
	abstract void getCommand();
	abstract void openCurse();
	abstract void openLight();
	abstract void openTv();
	
	public void work()
	{
		initUart();
		getCommand();
		openCurse();
		openLight();
		openTv();
	}
}

class C51 extends Con1
{
	void initUart(){
		System.out.println("C51 inituart");
	}
	
	void getCommand(){
		System.out.println("C51 getCommand");
	}
	
	void openCurse(){
		System.out.println("C51 openCurse");
	}
	
	void openLight(){
		System.out.println("C51 openLight");
	}
	
	void openTv(){
		System.out.println("C51 openTv");
	}
}

class C15 extends Con1
{
	void initUart(){
		System.out.println("C15 inituart");
	}
	
	void getCommand(){
		System.out.println("C15 getCommand");
	}
	
	void openCurse(){
		System.out.println("C15 openCurse");
	}
	
	void openLight(){
		System.out.println("C15 openLight");
	}
	
	void openTv(){
		System.out.println("C15 openTv");
	}
}

public class Test {
	public static void main(String[] args) {
		C51 c = new C51();
		c.work();
		
		C15 d = new C15();
		d.work();
	}
}


接口概念和作用

接口语法
interface 接口名{
	//共有静态常量,抽象方法
}

接口的特点
  1. 接口中只能存放静态常量(用的不多)和静态方法
  2. java接口是对功能的拓展
  3. 通过实现接口,java类可以实现多实现
  4. 一个类可以同时继承(extends)一个父类并且实现(implements)多个接口
  5. 接口与接口之间可以使用extends实现继承

接口和抽象类的区别
  1. 抽象类和具体实现之间是一个继承关系,也就是如果采用抽象类的方式,则父类和子类在概念上应该是相同的。
  2. 接口和实现类在概念上不要求相同,接口只是抽取相互之间没有关系的类的共同特征,而不去关注类之间的关系,它可以使没有层次关系的类具有相同的行为。
  3. 抽象类是一组具有相同属性和行为的逻辑上有关系的事物的一种抽象,而接口则是对一组具有相同属性的行为的逻辑上不相关的食物的一种抽象。

接口代码实现
interface xingWei
{
	abstract void eat();
	abstract void drink();
}

class People implements xingWei
{

	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("人吃饭");
	}

	public void drink() {
		// TODO Auto-generated method stub
		System.out.println("人喝水");
	}
	
}

class Animal implements xingWei
{

	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("动物吃饭");
	}

	public void drink() {
		// TODO Auto-generated method stub
		System.out.println("动物喝水");
	}
	
}

public class Test {
	public static void main(String[] args) {
		new People().drink();
		new Animal().drink();
	}
}


关于抽象类抽象方法和接口的相关知识总结到此。

努力一点吧,为了能走更好的路,遇见更优秀的人。

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

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

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