2020-08-12

第十一次课
一.
package com.hpe.demo;

/**

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

*/

//动物类
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;
}

}
二.
package com.hpe.demo;

public class Cat extends Animal {

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

}
三.
package com.hpe.demo;

//狗类
public abstract class Dog extends Animal {

//抽象方法
public abstract void sleep();

public Dog(String name){
	super(name);
}

public Dog(){
	
}

}
四.
package com.hpe.demo;

public class Dog2Ha extends Dog {

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

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

}
五.
package com.hpe.demo;

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();

}

}
另一个文件夹
一.
package com.hpe.demo1;

public class CommonEmployee extends Employee {

public CommonEmployee(){
	
}

public CommonEmployee(int id,String name,int salary){
	super(id, name, salary);
}

@Override
public void work() {
	System.out.println("普通员工正在工作");
	
}

}
二.
package com.hpe.demo1;

public abstract class Employee {
private int id;
private String name;
private int salary;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public Employee() {
super();
}
public Employee(int id, String name, int salary) {
super();
this.id = id;
this.name = name;
this.salary = salary;
}

//工作
public abstract void work();

}
三.
package com.hpe.demo1;

public class Manager extends Employee {

private int bonus;//奖金


public int getBonus() {
	return bonus;
}


public void setBonus(int bonus) {
	this.bonus = bonus;
}



public Manager(int bonus,int id,String name,int salary) {
	super(id,name,salary);
	this.bonus = bonus;
}


public Manager() {
	super();
}

@Override
public void work() {
	System.out.println("管理员工工作。。。");
	
}


@Override
public String toString() {
	return "Manager [bonus=" + bonus + "]";
}

}
四.
package com.hpe.demo1;

public class TestEmployee {

public static void main(String[] args) {
	//多态
	Employee manager=new Manager(5000, 1001, "张三", 20000);
	System.out.println("id:"+manager.getId()+",name:"+manager.getName()+
			",salary:"+manager.getSalary()+manager);
	manager.work();
	
	Employee ce=new CommonEmployee();
	ce.work();

}

}
在另一个文件夹
一.
package com.hpe.demo2;

public class AVI extends Player {

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

}
二.
package com.hpe.demo2;

public class MP4 extends Player{

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

}
三.
package com.hpe.demo2;

//播放器类
public abstract class Player {

//播放的方法
public abstract void play(String file);

//停止
public void stop(){
	System.out.println("播放停止.....");
}

}
四.
package com.hpe.demo2;

public class RMVB extends Player {

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

}
五.
package com.hpe.demo2;

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();

}

}
package com.hpe.demo2;

public class WMN extends Player {

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

}
最后一个文件夹

package com.hpe.demo3;

public class TestTraffic {

public static void main(String[] args) {

// Traffic t=new Traffic();

}

}
二.
package com.hpe.demo3;

/**

  • 1.什么是接口?
  • (1).就是多个类之间的公共规范
  • (2)接口就是一个特殊的抽象类型,接口里面的方法都是抽象方法
  • (3).接口解决了java单继承的鸡肋
  • 2.怎么定义一个接口
  • public interface 接口名{
  • }

*3.接口的特点
*(1)接口里面的属性都是常量,默认会给你加上“public static final”修饰
*(2)接口里面的方法都是抽象方法,默认会给你加上“public abstract”进行修饰
*/

//交通工具类
public interface Traffic {

// int age=10;//常量
// public static final int Age1=10;

public abstract void start();//这是一个抽象方法

abstract void add();//这也是一个重新方法

public void run();//这是一个抽象方法

 void stop();//这也是一个抽象方法

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值