黑马程序员—抽象类和接口

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

抽象类概括

定义: 多个类中的方法声明一样,但是方法体不一样,针对这种情况,我们只抽取方法声明,而只有方法声明没

        有方法体的方法就是抽象方法。用abstract表示。如果一个类中有抽象方法,这个类必须定义为抽象类。

抽象类的特点:

1 一个类中如果有抽象方法,那么这个类必定为抽象类。但是一个类中也可以没有抽象方法,

        这样做是为了不让别人直接创建对象。

2 一个类继承一个抽象类,要么全部实现父类的抽象方法,要么自己也是抽象类。

3 抽象类不能被实例化。

抽象类关键字abstract:它不能和那些关键字共存?

        1 final:final修饰的方法不能被重写,而abstract修饰的方法必须被重写,冲突。

        2 static:static修饰的方法可以直接被类名调用,而调用一个抽象方法没有意义。

        3 private:private修饰的方法不能被重写,而abstract修饰的方法必须被重写,冲突。

抽象类的成员特点: 

        1 成员变量:可以是变量,也可以是常量。

        2 构造方法:有构造方法,用于子类实例化时试用。

        3 成员方法:可以是抽象方法,也可以是非抽象方法。

案例:抽象方法的简单演示。

abstract class Animal //抽象的动物类,有个吃的方法。
{
	public abstract void eat();
}

abstract class Dog extends Animal
{
	public abstract void eat();
	
}

class Cat extends Animal
{
	
	public void eat()
	{
		System.out.println("haha");
	}
	
}

class AbstractDemo 
{
	public static void main(String[] args) 
	{
		Animal d = new Dog();
		Animal c = new Cat();
				d.eat();
		c.eat();
	}
}
接口概括

定义:接口是一种特殊的抽象类,当抽象类中的方法全部为抽象的时候。Java就提供了一种新的表现形式:接口。interface

抽象类和接口的区别:

1 成员的区别:

        抽象类:成员变量:可以是变量,也可以是常量。

        构造方法:有构造方法,用于实例化使用。

        成员方法:可以是抽象的,也可以是非抽象的。

        接口:

         成员变量:只能是常I量,默认修饰符是Public static final.

        成员方法:只能是抽象的,默认修饰符:public abstract。

        建议:默认修饰符应该永远手动给出。

2  类和接口的关系区别:

        类与类之间:继承关系,只能单继承,也可以多层(重)继承。

        类与接口:实现关系,可以单实现,也可以多实现。而且类还可以在继承一个类的同时实现多个接口。

        接口与接口:继承关系,可以单继承,也可以多继承。

3  体现的理念不同:

        抽象类里面定义的都是一个继承体系中的共性内容,抽象类被继承是is a  的关系,xx是yy的一种。

        而接口中定义的是一个体系的扩展内容,接口被实现:like a的关系,xx像yy的一种。

4  格式:

		父接口:
			interface Inter
			{
			
			}

		子类:
			class InterImpl implements Inter
			{
			
			}

     5案例 接口间的继承

/*
	当一个类中的方法都是抽象的时候,我们用接口来体现。

	接口的特点:
		A:不用使用abstract进行修饰的,它本身就可以代表是一个抽象的内容。
		B:类可以实现一个接口,也可以实现多个接口。
		  类在继承一个类的同时,还可以实现多个接口。
		C:接口继承接口,可以单继承,也可以多继承。
*/
interface  Inter
{
	public abstract void show();
}

interface Inter2
{
	public abstract void method();
}

interface Inter3 extends Inter,Inter2  //接口的多继承
{

}

//class InterImpl extends Object implements Inter,Inter2
class InterImpl implements Inter,Inter2
{
	public void show()
	{
		System.out.println("show");	
	}

	public void method()
	{
		System.out.println("method");
	}
}


class InterfaceDemo 
{
	public static void main(String[] args) 
	{
		
	}
}

简单测试

interface Inter
{
	int num = 10;

	void method();
}

class InterImpl implements Inter
{
	public void show()
	{
		System.out.println(num);
		System.out.println(Inter.num);
	}

	public void method()
	{
		
	}
}

class InterfaceDemo2 
{
	public static void main(String[] args) 
	{
		InterImpl ii = new InterImpl();
		ii.show();
	}
}


---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值