Java抽象类

 

/**
 * 抽象类:
 * 1.什么是抽象类?
 * 如果一个类表达的是一种抽象的概念,仅仅作为其他派生类的一个父类,主要功能的定义,具体的实现交给他的子类来做
 * 2.语法
 * 在class前面加上abstract就是一个抽象类
 * 
 * 3.抽象类的特点:
 * (1).抽象方法所在的类必须是抽象类
 * (2).抽象类不能进行实例化(因为抽象类中包含抽象方法,所以不能用抽象类来实例化对象)
 * (3).如果要实现一个抽象类,创建一个子类去继承这个抽象类
 * (4).子类继承抽象类以后,必须重写抽象类里面所有的抽象方法(前提子类不是抽象类)
 * (5).抽象类里面可以定义普通方法
 * (6).抽象类可以定义构造方法(没有实例化对象的作用但是有初始化抽象类中属性的作用)
 * 
 * 
 * 
 * 抽象方法:
 * 在返回值前面加上abstract就是一个抽象方法
 * 抽象方法的特点:
 * 只能方法的定义,没有方法体
 * 
 *
 */

 

 

Animal一个抽象的父类

//动物类
public abstract class Animal {
	
	private String name;
	
	//动物吃什么?因为动物吃什么这就是一个抽象的,因为我也不知道是什么动物
	public abstract void eat();
	
	public void walk(){
		System.out.println("..");
	}
	
	public Animal(){
		
	}
	
    public Animal(String name){
		this.name=name;
	}

}

 Cat类继承抽象的父类Animal,并重写父类里面的抽象方法。

public class Cat extends Animal {

	@Override
	public void eat() {
		System.out.println("猫爱吃鱼");
		
	}

}

抽象类Dog继承抽象父类Animal,Animal中的抽象方法可以不用重写,因为Dog也是抽象类


//狗类
public abstract class Dog extends Animal {

	//抽象方法
	public abstract void sleep();
	
	public Dog(String name){
		super(name);
	}
	
	public Dog(){
		
	}

}

Dog2Ha继承了抽象类Dog,Dog2Ha类中要重写Dog和Animal中的抽象方法。


public class Dog2Ha extends Dog {

	@Override
	public void sleep() {
		System.out.println("二哈呼呼大睡");
		
	}

	@Override
	public void eat() {
		System.out.println("二哈吃狗粮");
		
	}

}

TestAnimal,用多态的方式创建实例对象,编译阶段看对象左边,执行阶段看对象右边。


public class TestAnimal {

	public static void main(String[] args) {
		
		//Animal an=new Animal();因为动物也是一个抽象的,不具体的
		
		//多态:父类的引用指向了子类
//		Animal dog=new Dog();
//		dog.eat();
		
		Animal cat=new Cat();
		cat.eat();
		
		Dog dog=new Dog2Ha();
		dog.eat();
		dog.sleep();

	}

}

运行结果

 

抽象类播放不同格式简单demo

 

//播放器类
public abstract class Player {
	
	//播放的方法
	public abstract void play(String file);
	
	//停止
	public void stop(){
		System.out.println("播放停止.....");
	}

}

AVI格式

public class AVI extends Player {

	@Override
	public void play(String file) {
		System.out.println("播放"+file+"视频......");
		
	}

}

MP4格式

public class MP4  extends Player{

	@Override
	public void play(String file) {
		System.out.println("播放"+file+"视频.....");
		
	}

}

RMVB格式

public class RMVB extends Player {

	@Override
	public void play(String file) {
		System.out.println("播放"+file+"视频......");
		
	}

}

WMN格式

public class WMN extends Player {

	@Override
	public void play(String file) {
		System.out.println("播放"+file+"视频......");
		
	}

}

main调用

public class TestPlayer {

	public static void main(String[] args) {
		
		//1.视频文件
		String file="海王.mp4";
		//2.获取视频文件的扩展名
		//lastIndexOf():获取最后字符.的下标
		int index=file.lastIndexOf(".");
		//3.截取字符串,只保留扩展名
		String str=file.substring(index+1);
		Player player=null;
		switch (str.toUpperCase()) {//把字母变成大写
		case "MP4":
			player=new MP4();
			break;
		case "AVI":
			player=new AVI();
			break;
		case "WMN":
			player=new WMN();
			break;
		case "RMVB":
			player=new RMVB();
			break;
		default:
			System.out.println("不支持此格式视频....");
			break;
		}
		System.out.println("开始播放视频...........");
		//调用播放视频的方法
		player.play(file);
		
		//休眠5秒
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//停止播放
		player.stop();

	}

}

运行截图

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值