欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java编程思想 抽象类和接口

程序员文章站 2022-07-12 12:37:25
...

接口c++对接口和内部类只有简介的支持,但在java中有队这些类的直接支持

 

1 ,抽象类 :  如果一个类包含一个或多个抽象方法,该类必须限定为抽象类(否者编译器报错)

 

抽象方法 在方法中仅有声明而没有方法体 

 

package com.wj.Interface;

//类包含抽象方法,此类必须声明为抽象
public abstract class AbstractClass {

	public void play(String str) {
		System.out.println(str);
	}

	// 抽象方法,只有实体 没有实现
	abstract void play();
}

package com.wj.Interface;

/**
 * 
 */
public class AbstractDemo extends AbstractClass {
	// 抽象类不能直接new 对象 必须要有子类继承 在子类中实现抽象类中的抽象方法
	@Override
	void play() {
		System.out.println("实现抽象类中的方法");
	}

	public static void main(String[] args) {
		// 常见对象
		AbstractDemo demo = new AbstractDemo();
		// 调用抽象类中的方法
		demo.play("java");
		// 调用抽象方法的实现
		demo.play();
	}

}

 运行结果:

java

实现抽象类中的方法

 

2,接口  implement  接口的多重继承

定义两个接口;子接口继承这两个接口  ,  类实现子接口

被继承的接口

/**
 * 
 * @author Administrator
 *定义接口  抽象方法
 */
public interface AbstrctIter1 {
	public void getAll();
	public void getSize();
	public void getName();
}

被继承的接口
package com.wj.Interface;

/**
 * 
 * @author Administrator
 *定义接口
 */
public interface AbstrctIter2 {
	public void getAll2();
	public void getSize2();
	public void getName2();
}

子接口继承上面的接口
package com.wj.Interface;
/**
 * 
 * @author Administrator
 *接口   定义接口 不能使用class 必须使用interface
 *接口可以有多重继承
 */
public interface AbstractInterface extends AbstrctIter1,AbstrctIter2{
	//定义抽象方法,接口中不能有具体方法的实现
	public void play(String str);
	public void play(String str,int age);
}


定义类实现子接口 ,类会实现接口的所有方法
package com.wj.Interface;

/*
 * 实现接口 实现接口的方法
 */
public class AbstractImplement implements AbstractInterface{

	@Override
	public void play(String str) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void play(String str, int age) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void getAll() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void getSize() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void getName() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void getAll2() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void getSize2() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void getName2() {
		// TODO Auto-generated method stub
		
	}
	

}

 

3,完全解耦

只要有一个方法操作的一个类而非一个接口,那么我们就只能使用这个类及其子类

 

4,接口与工厂

接口可实现多重继承,类不可以是多重继承