多态之抽象类、接口

抽象类

在一个类中,如果该类中存在一个功能,仅仅方法声明,没有方法体(抽象方法),需要将该类定义抽象类.
特点:

1.如果一个类中有抽象方法,那么该类一定是抽象类;
		如果一个类是抽象类,那么该类中不一定存在抽象方法;

2.抽象类不能实例化(不能创建对象)

3.抽象类需要通过子类进行实例化,父类引用指向子类对象(父类是抽象类):抽象类多态!
			(一定会存在具体的子类)
			
4.抽象方法的格式:没有方法体的方法
权限修饰符 abstract 返回值类型 方法名(形式参数) ;

抽象类的成员特点:
1.成员变量

即可定义一个常量,也可以定义为变量

2.成员方法:

既可以定义抽象方法,也可以定义非抽象方法	

3.构造方法:

存在构造方法,既可以有参构造也可以是无参构造方法

抽象类成员方法特点:
成员方法如果是抽象方法,必须强制类完成的事情
成员方法如果是非抽象方法,子类继承父类

使用abstract应该注意:	
abstract关键字不能和哪些关键字共用 (定义成员方法的时候)
和final关键字冲突
和private关键字冲突
和static关键字冲突 
public abstract class Animal {
	String name;
	public abstract void sleep();

}
public class Cat extends Animal {

	@Override
	public void sleep() {
		System.out.println("猫整天在睡觉");

	}
	//私有成员方法
	public void play() {
		System.out.println("猫喜欢玩老鼠");
	}

}
public class Test {

	public static void main(String[] args) {
		//通过子类对象访问抽象类
		Animal a=new Cat();
		a.sleep();
		//向下转型
		Cat c=(Cat)a;
		c.play();

	}

}

接口

 接口体现的是事物的一种扩展性功能.
 接口的表示:interface

使用接口的注意事项:

  • 接口中只能定义抽象方法

  • 接口不能实例化
    
  • 通过接口的子实现类来进行实例化

  • 如果接口的子实现类是抽象类,不能实例化,那抽象类肯定存在具体的子类。

接口中 成员特点:
成员方法:

只能是抽象方法,存在默认的修饰符,public abstract

成员变量:

只能是常量.存在默认的修饰符:public static final

构造方法:

不存在构造方法

注意:

 一个类继承另一个类的同时,可以实现多个接口
//定义接口
public interface A {
	public void fly() ;
}
//接口子实现类
public class Bird implements A {

	@Override
	public void fly() {
		System.out.println("鸟儿飞翔");

	}

}
//测试
public class Test {
	public static void main(String[] args) {
		//通过子实现类实现接口
		A a=new Bird();
		a.fly();
		
	}
}

抽象类和接口的区别

成员的区别
	成员变量:
		抽象类:既可以定义常量,也可以定义变量
		接口:只能是常量,存在默认修饰符:public static final...
	成员方法:
		抽象类:既可以定义抽象方法,也可以定义非抽象方法
		接口:只能是抽象方法,存在默认的修饰符:public abstract..
	构造方法:
		抽象类:存在构造方法,无参/有参,对数据进行构造初始化(分层初始化)
		接口:没有构造方法
关系的区别
		类与类之间
				不管这个类是抽象类还是具体类,都继承关系(extends)
				支持单继承,不支持多继承,可以多层继承
		类与接口之间
				实现关系(implements)
				一个类继承另一个类的同时可以实现多个接口!
		接口与接口之间
				继承关系(extends)
				支持单继承,以及多继承!
设计理念的区别
	抽象类,----在抽象类多态中使用: 存在继承关系---- >体现的一种"is a"的关系

	接口:体现的一个事物的扩展功能(额外功能),本身不具备的功能 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值