3.1 java抽象类与接口简介

抽象类与接口简介

抽象类

  1. 特点
  • 有抽象方法的类只能被定义成抽象类
  • 抽象类不能实例化,即不能用new来实例化抽象类
  • 抽象类可以包含属性、方法、构造方法。但构造方法不能用来new实例,只能用来被子类调用
  • 抽象类只能用来被继承
  • 抽象类中的抽象方法必须被子类实现
  1. 代码
package dxt;
/**
 * 测试抽象类,抽象方法
 * 抽象类:
 * 1.有抽象方法的类只能被定义成抽象类
 * 2.抽象类不能实例化,即不能用new来实例化抽象类
 * 3.抽象类可以包含属性、方法、构造方法。但构造方法不能用来new实例,只能用来被子类调用
 * 4.抽象类只能用来被继承
 * 抽象方法:
 * 1.抽象类中的抽象方法必须被子类实现
 * @author dxt
 *
 */
public abstract class Animal {
	/**
	 * 抽象方法,前加abstract
	 * 抽象方法只能在抽象类中
	 * 特点:方法没有被实现; 子类中必须被实现,子类继承时,不实现就会出错
	 * 
	 */
	abstract public void shout();
	
	/**
	 * 抽象类中可以有非抽象方法
	 */
	public void run(){
		System.out.println("韩跑跑");
	}
	
	public static void main(String[] args){
		Animal a = new Dog();	//父类引用指向子类对象
		a.shout();				//子类继承父类、子类重写父类方法-----多态
	}
}

class Dog extends Animal{
	/**
	 * 子类必须实现父类的抽象方法
	 */
	public void shout(){
		System.out.println("嗷呜嗷呜...");
	}
}

接口

  1. 特点
  • 接口定义为interface 不是class
  • 接口中所有方法都是且只能是 抽象方法,接口只定义规范,不提供任何实现,即public abstract
  • 接口和实现类不是父子关系,是实现规则关系
  • 一个接口可以继承多个父接口(多继承)
  • 接口中的属性都是且只能是常量,即 public static fianl
  • 接口中不存在私有
  • 子类通过implements继承接口
  • 实现类可以实现多个父接口
  1. 代码
package dxt;
/**
 * 测试接口和实现类
 * @author dxt
 *
 */
public class TestInterface {
	
	//测试
	public static void main(String[] args){
		Hero rebort = new IronMan();
		rebort.helpOther();
		
		Volant s = new SpiderMan();
		s.fly();
	}
}

/**
 * 飞行接口
 */
interface Volant{
	int FLY_HEIGHT = 1000;	//默认常量
	void fly();				//默认抽象方法
}
/**
 * 英雄接口
 * @author dxt
 *
 */
interface Hero{
	void helpOther();
}

class IronMan implements Volant, Hero{
	public void fly(){
		System.out.println("飞行高度"+FLY_HEIGHT+"米");
	}
	
	public void helpOther(){
		System.out.println("帮邻居休水管");
	}
}

class SpiderMan implements Volant{
	public void fly(){
		System.out.println("Are you kidding me???");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值