Java 5-4 abstract类与方法

abstract类与方法

1.抽象类:

  • 用abstract修饰符修饰的类为抽象类,修饰的方法为抽象方法。
  • 用abstract修饰的方法只能声明不能实现。且final和abstract不能同时修饰一个方法
  • 例如:
abstract class A{
abstract int min (int x,int y);//只声明不实现
}

2.抽象类特点:

  • 抽象类中可以有抽象类方法,也可以有非抽象类方法。而普通类中不能有抽象类方法
  • 抽象类中可以全为非抽象方法,可以没有抽象方法
  • abstract类不能使用new运算符创建对象
  • 非抽象类继承了某个抽象类:则其必须去掉abstract修饰符,重写父类的抽象方法,给出具体的方法体
  • 抽象类继承了某个抽象类:则其可以重写父类abstract类方法,也可以继承父类的abstract方法。
  • 抽象类声明的对象可以成为其子类对象的上转型对象,调用子类重写的方法

例子:定义一个机动车抽象类,该类中有启动,加速,刹车三种功能,分别用手动挡,自动挡实现机动车的功能细节

abstract class 机动车{
abstract void 启动();
abstract void 加速();
abstract void 刹车();
}
class 手动挡汽车 extends 机动车{
void 启动(){
System.out.println("踏下离合器,换到一档");
}
void 加速(){
System.out.println("换到高档,踩油门");
}
void 刹车(){
System.out.println("踏下离合器和刹车,将档位换到一档");
}
}
class 自动挡汽车 extends 机动车{
void 启动(){
System.out.println("使用前进档");
}
void 加速(){
System.out.println("踩油门");
}
void 刹车(){
System.out.println("踩刹车");
}
}

public class example_1{
public class void main(String args[ ]){
机动车 car=new 手动挡汽车();
System.out.println("手动挡汽车的具体操作是:");
car.启动();
car.加速();
car.刹车();
car=new 自动挡汽车();
System.out.println("自动挡汽车的具体操作是:");
car.启动();
car.加速();
car.刹车();
}
}


在这里插入图片描述

3.多态设计
例子:设计一个动物声音模拟器,模拟器可以模拟多种动物的叫声

package d;

abstract class Animal {
	abstract void cry();
	abstract String getAnimalName();
}

class Dog extends Animal{
	void cry() {
		System.out.println("wuwuwuwwuu");
	}
	
	String getAnimalName() {
		return "狗";
	}	
}

class Cat extends Animal{
	 void cry() {
			System.out.println("miaomiao");
		}
	
		String getAnimalName() {
			return "猫";
		}
 }
 
class 动物声音模拟器{
	public void palySound(Animal animal)
	{
		System.out.println("现在播放"+animal.getAnimalName()+"类的声音");
		animal.cry();
	} 
 }

public class example_3 {

	public static void main(String[] args) {
		        动物声音模拟器 模拟器=new 动物声音模拟器();
		        Animal animal=new Dog();
				模拟器.palySound(animal);
				animal=new Cat();
				模拟器.palySound(animal);			
			}

	}



 

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值