Java--抽象类,接口

自从猫狗霸占我的床之后,无事可做,就被迫学习。。。。。

Java中定义的没有方法体的方法,称该方法为抽象方法,包含抽像方法的类称为抽象类。
当类中的方法不确定有什么内容时,可以先使用一个抽象类

//例如
abstrack class Animal{
	//抽象方法没有大括号{},并且前有abstract关键字所修饰
	public abstrack void eat();     	
}
abstrack class Cat extends Animal{
	/*当继承的父类里出现抽象方法时,继承方式有两种:
	1.子类应被abstract所修饰
	2.父亲中所有抽象方法要重写
	*/
	void eat(){
	                                 
	}
}
public static void main(String[] args)
{
	//Animal a=new Animal();      会报错,抽象类无法实例化
	
}
抽象类的特点
  • 抽象类中可以有构造方法
  • 抽象类中可以定义不是抽象类的方法
  • abstract 使用时不能与public static final等关键字同时使用
  • 抽象类一定是个父类
接口

特殊的抽象类
格式
interface 接口名{}
接口中成员修饰符是固定的。
成员变量:public static final
成员函数:public abstract
接口中的默认方法,需要使用default修饰

//接口类似于继承但不同,类与接口之间是实现关系
//接口不能实例化对象
interface A{
	public static final string name="zs";
	public abstract void eat();
}
//实现接口A,A中有抽象函数,处理方法与继承相同,有两种
class B implements A{
	public void eat();         //在这我选重写这一方式
}
interface C{

}
//子类在继承一个类的同时,还可以实现多个接口
//优点,避免了单继承的局限性
//要先继承一个类再实现接口
class D extends B implements A,C{

}
//类与类之间是单继承,接口与接口之间是多继承
interface E extends A,C{
}
接口的应用

举个栗子
在这里插入图片描述
这里我们可以从底层不断寻找共性向上层抽取。这种可以用继承关系来处理
在这里插入图片描述
当对象拥有多个技能时,这是用接口来实现

来写代码吧

class Person{
	String name;
	String sex;
	void eat()
	{
		System.out.println("人要吃饭。");
	}
	void sleep()
	{
		System.out.println("人要睡觉。");
	}
}
abstract class Student extends Person{          //我不会用英语写运动员so临时改成学生和老师        
	abstract void learn();
}
abstract class Teacher extends Person{
	abstract void teach();
}
interface A{
    //jdk1.8之后,jdk默认为public abstract方法
	void LearnEglish(); 
}
class Bstudent extends Student implements A{
	public void learn(){
		System.out.println("学习篮球");
	}
	public void LearnEglish()
	{
		System.out.println("学英语");
	}
}
class Bteacher extends Teacher{
	public void teach(){
		System.out.println("教篮球");
	}	
}

class Demo1{
	public static void main(String[] args)
	{
		Bstudent s=new Bstudent();
		s.learn();
		s.LearnEglish();
	}
}

总结抽象类和接口
相同:都是将相同的东西抽取出来
不同:

  • 抽象类需要被继承,接口需要被实现
  • 抽象类只能单继承,接口可以多实现
  • 抽象类可以有抽象和非抽象的方法,接口只能是抽象方法
  • 抽象类的继承,是该体系中基本共性的内容,接口是该体系中额外的功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值