文档章节

Java抽象类和接口

李茂冉
 李茂冉
发布于 2016/05/15 14:34
字数 660
阅读 5
收藏 0

##抽象类(Abstract class)

  1. 可以禁止对象的创建,一般在上层类中使用较多(需要继承关系实现多态性的应用,但该类并没有真正的实际逻辑含义)
  2. 抽象类中可以定义属性和构造器,语法和普通类相同
  3. 抽象类中可以定义普通方法,语法和普通类相同
  4. 抽象类中可以定义抽象方法,一般用于没有内容的方法可以定义为抽象方法 语法: [修饰符]abstract 返回类型 方法名称(参数)[异常抛出]
  5. 抽象类中可以没有抽象方法;如果类中存在抽象方法,该类必须定义为抽象类
  6. 类从父类继承方法后,必须将所有抽象方法覆盖(对抽象方法的覆盖又称为实现),如果没有实现所有的抽象方法则该类必须也声明为抽象类

##类和接口之间的关系

  1. 类和类:extends关键字,单继承
  2. 类和接口:implements关键字,多重实现
  3. 接口和接口:extends关键字,多重继承

###语法:

interface 接口名 extends 接口1,接口2,...{... ...}

package com.md9;
/*
1、定义接口使用interface关键字,语法与定义类相同
2、接口中没有属性和构造器
3、定义属性会加入隐含修饰符public static final
4、不能创建接口的对象,也没有属性需要初始化,所以对于接口,构造器没有任何的作用
5、接口中的方法必须是抽象的,会加入隐含修饰符public abstract
*/
interface IShape{

	//String name="senven"; 公有静态常量
	void draw();
	void draw(String type);
}/*
类定义的完整语法
[修饰符] class 类名 [extends 父类] [implements 接口1,接口2,....]
实现特定的接口的类将获得在接口中定义的所有语法元素(常量和方法)
*/
class ICircle implements IShape
{	private String name;
	public ICircle(){}
	public ICircle(String name){
		this.name=name;
	}
	public void setName(String name){
		this.name=name;
	}
	public String getName(){
		return name;
	}
	public void draw(){
		System.out.println("draw a circle.");
	}
	public void draw(String type){
		if(type.equals("name"))
			System.out.println("draw a circle, name is"+name);
		else
			draw();
	}
}
/*
参照ICircle完成IRectangle
*/
class IRectangle implements IShape
{
	private String name;
	public IRectangle(){}
	public IRectangle(String name){
		this.name=name;
	}
	public void setName(String name){
		this.name=name;
	}
	public String getName(){
		return name;
	}
	public void draw(){
		System.out.println("draw a rectangle.");
	}
	public void draw(String type){
		if(type.equals("name"))
			System.out.println("draw a rectangle, name is"+name);
		else
			draw();
	}
};
/*
接口类型的引用可以指向实现该接口的类的对象
*/
public class IShapeTest {
    public static void draw(IShape s){
	s.draw();
    }
    public static void draw(IShape s,String type){
        s.draw(type);
    }
    public static void main(String[] args){
	IShape s=null;
	//s=new IShape();error
	ICircle c=new ICircle();
	draw(c);
	IRectangle r=new IRectangle("my rectangle use interface");
	draw(r,"name");
    }
}

© 著作权归作者所有

共有 人打赏支持
李茂冉
粉丝 5
博文 103
码字总数 59256
作品 0
东城
高级程序员
JAVA接口的概念、分类及与抽象类的区别

Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(...

郭二翔
2011/12/17
0
0
115个Java面试题及回答

解释下可用的线程状态. 在执行期间, 线程会处于以下状态中的一种: Runnable: 线程已准备就绪, 但没有立即运行. Running: 处理器正在执行的线程代码. Waiting: 处于阻塞状态的线程, 等待外部某...

Yamazaki
2014/04/25
0
0
java程序员基础进阶篇,万丈高楼平地起

一.final,finally,finalize 三者区别 Final是一个修饰符: 当final修饰一个变量的时候,变量变成一个常量,它不能被二次赋值 当final修饰的变量为静态变量(即由static修饰)时,必须在声明这...

启示录是真的
05/26
0
0
深入理解Java中的抽象类和接口

对于面向对象编程来说,抽象是它的一大特征。在Java中,可以通过两种形式来体现OOP的抽象:抽象类和接口。这两者有太多向内的地方,又有太多不同的地方。很多人在初学的时候以为它们可以随意...

FunGa
2015/11/03
0
0
大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
30
0
awk命令扩展使用操作

awk 中使用外部shell变量 示例1 [root@centos01 t1022]# A=888[root@centos01 t1022]# echo "" | awk -v GET_A=$A '{print GET_A}'888[root@centos01 t1022]# echo "aaaaaaaaaaaaa" | aw......

野雪球
今天
27
0
深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
今天
36
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
今天
23
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
35
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部