Java中的抽象类和接口

1.抽象类的认识

在继承的层次结构中,每个新的子类都使得类变得更加明确与具体。如果从一个子类向父类追溯,类就会变得更加通用,更加的不明确。类的设计应该确保父类包含他的子类的共同特征。有时候,一个父类设计的非常抽象,以至于他都没有具体的实例,这样的类称为抽象类。例如:

public abstract class CLass{
	abstract void fun();
}

这就是一个抽象类的定义,在普通的类的定义上有些不同,因为在ClassName之前有了关键字abstract代表抽象类(必须要用abstract来修饰),而其中的 abstract void fun(); 则是抽象类中的抽象方法。

抽象类的几个特点:

1.他和常规类很像,但是不能用new操作符创建他的实例。抽象方法只有定义而没有实现。它的实现由子类提供。一个包含抽象方法的类必须声明为抽象类

2.抽象类的构造方法定义为protected,因为他只被子类使用,创建一个具体子类的时候,父类的构造方法被调用以初始化父类中定义的数据域

代码例子(来源于书本)

public abstract class geometricobject {
	private String color ="white";
	private boolean filled;
	private java.util.Date dateCreated;
	public geometricobject() {
		dateCreated=new java.util.Date();
	}
	public geometricobject(String color,boolean filled) {
		dateCreated = new java.util.Date();
		this.color=color;
		this.filled=filled;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color=color;
	}
	public boolean ifFilled() {
		return filled;
	}
	public void setFilled(boolean filled) {
		this.filled=filled;
	}
	public java.util.Date getDateCreated(){
		return dateCreated;
	}
	public String toString() {
		return"created on"+dateCreated+"\ncolor"+color+"and filled: "+filled;
	}
	public abstract double getArea();
	public abstract double getPerimeter();
	

}

在这其中就将geometricobject定义为一个抽象类,代表不同的几何图形类型汇总,其中的getArea和getPerimeter是其中的两个方法,因为在不同的几何图形中他们的方法作用不同,所以将他们也定义为抽象方法。

2.接口

接口和类十分的相似,但是他的目的是指明相关或者不相关类的对象的共同行为,在Java中采取其他的方式来定义接口

public interface name{
	//
}

在Java中接口被看做是一个特殊的类。就像常规类一样,每个接口都被编译为独立的字节码文件。使用接口或多或少都有点像使用抽象类。类和接口之间的关系被称为接口继承,使用implements关键字来继承

class c1 extends c2 implements c3{
    //
}

就是代表一个c1的类继承了c2并且c1这个类又实现了与c3的接口

同时Java 8 中还允许接口存在公有的静态方法。接口中的公有静态方法和类中的公有静态方法一样使用。下面是一个在接口中定义默认方法和静态方法的实例:

public interface A{
	public default void dosomething() {
		System.out.println("...");
	}
	public static int getValue() {
		return 0;
	}
}

3.接口与抽象类

Java只允许为类的继承做单一继承,但是允许使用接口做多重继承,例如:

 

public class clas extends basic implements In1,In2,...,Inn{
	//
}

其实接口和抽象类最大的区别就是抽象类对的是一个对象,而接口则是一个行为,例如人是一个大类,其中包含了男人和女人,而接口则是指的是其中的行为,比如人干什么事,吃什么饭,能吃那就能实现这个接口,不能就不能实现这个接口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值