抽象类、抽象方法的特点及使用

抽象类

当多个类中出现了相同功能,但功能主题不同,
这时可以向上抽取,这时,只抽取功能定义,而不抽取功能主体。


抽象:看不懂

抽象类的特点:

1、抽象方法一定定义在抽象类中,抽象类可以有非抽象方法
2、抽象方法和抽象类都必须被abstract关键字修饰
3、抽象类不可以用new创建对象,因为调用抽象方法没意义
4、抽象类中的方法如果被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用
如果子类值副高了部分抽象方法,那么子类还是一个抽象类


抽象类和一般类没有太大的不同
该如何描述事物,就如何描述事物,只不过,该事物出现了一些看不懂的东西
这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主体
通过抽象方法来表示


抽象类比一般类多了个抽象方法,就是类中可定义抽象方法。
抽象类不可以实例化。


特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象


示例代码
abstract class Student
{
	abstract void study();//不是{}…………注意,学习的方法为抽象,不能创建对象
	void sleep()
	{
		System.out.println("shuijiao");
	}
}

class BassStudent extends Student
{
	void study()
	{
		System.out.println("bass study");
	}
}

class AdvStudent extends Student
{
	void study()
	{
		System.out.println("adv study");
	}

}

class AbstractDemo 
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
	}
}


抽象类练习

加入我们开发一个系统时需要对员工进行建模,员工包括3个属性:姓名、工号以及工资,经理也是员工,除了有员工的属性外,另外还有一个奖金属性。请使用继承的思想。

设计出员工类和经理类。要求类中提供必要的方法进行属性访问


员工类:name、id、pay

经理类:继承了员工,并有自己特有的bonus

abstract class Employee
{
	private String name;
	private String id;
	private double pay;

	Employee(String name,String id,String pay)
	{
		this.name=name;
		this.id=id;
		this.pay=pay;
	}
	public abstract void work();
	
}


class Pro extends Employee
{
	Pro(String name,String id,double pay)
	{
		super(name,id,pay);
	}
	public void work()
	{
		System.out.println("Pro work");
	}
}


class Manager extends Employee
{
	private int bonus;
	Manage(String name,String id,double pay,int bonus)
	{
		super(name,id,pay);
		this.bonus=bonus;
	}
	public void work()
	{
		System.out.println("manager work");
	}
}


class  Company
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
	}
}



原文地址:https://www.cnblogs.com/xiangyangzhu/p/4260841.html