Java抽象类和接口
Java抽象类和接口
李茂冉 发表于1年前
Java抽象类和接口
  • 发表于 1年前
  • 阅读 4
  • 收藏 0
  • 点赞 2
  • 评论 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");
    }
}
共有 人打赏支持
粉丝 6
博文 102
码字总数 59009
×
李茂冉
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: