[15]抽象

抽象:功能具备但不具体

 

抽象的方法需要用abstract修饰,并用分号结束

有抽象方法的类必须也用abstract修饰,为抽象类

 

抽象类:在描述事物时,没有足够的信息来具体描述。

 

抽象特点:

1.抽象方法和抽象类必须被abstract修饰,抽象方法必须在抽象类中

2.抽象类不能够创建实例

3.只有覆盖了抽象类的所有抽象方法,子类才能够被实例化。

 

细节问题:

1.抽象类一定是父类

2.抽象类有自己的构造方法

只不过无法给自己实例化,但是可以帮助子类进行实例化

例如:

public abstract class A{
    private int a;
    private int b;
    public A(int a,int b){
        this.a=a;
        this.b=b;
    }
}

public class B extends A{
    public B(int a,int b){
        super(a,b);
    }
}

3.抽象类可以不定义抽象方法,仅仅是为了不让实例化

4.abstract关键字不能与一些关键字共存:

【1】final:被final修饰的类不能被继承,但是抽象类一定是父类

【2】static:抽象类不能被实例化是因为方法不具体,狗可以是对象,但是动物这个对象太抽象化了。狗可以是“汪汪”的叫,但是动物我们不知道怎么叫。所以无法实例化抽象类,但是static修饰方法后却可以直接通过类名调用。和对象一样不合适

【3】private:抽象方法被私有化后,那么子类将无法访问重写方法

抽象类与普通类的区别

不同:

1.抽象类不能实例化,普通类可以实例化

2.抽象类描述的事物不具体,普通类描述的具体

3.抽象类可以有抽象函数以分号结尾,普通类没有抽象函数

相同:

1.都是描述事物

2.都可以定义属性和行为

 

例子:

一个公司有程序员和项目经理

程序员:姓名工号薪水 工作

项目经理:姓名工号薪水奖金 工作

建模

public abstract class Worker {
	private String name;
	private String id;
	private int xMoney;//薪水
	
	public abstract void work();
	
	public Worker(String name,String id,int xMoney) {
		// TODO Auto-generated constructor stub
		this.name=name;
		this.id=id;
		this.xMoney=xMoney;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getId() {
		return id;
	}
	public void setxMoney(int xMoney) {
		this.xMoney = xMoney;
	}
	public int getxMoney() {
		return xMoney;
	}
}
//程序员类
public class Programmer extends Worker{

	public Programmer(String name, String id, int xMoney) {
		super(name, id, xMoney);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void work() {
		// TODO Auto-generated method stub
		System.out.println("代码");
	}
}
//项目经理类
public class Manager extends Worker{
	private	int jMoney;//奖金
	
	public void setjMoney(int jMoney) {
		this.jMoney = jMoney;
	}
	
	public int getjMoney() {
		return jMoney;
	}
	
	public Manager(String name, String id, int xMoney,int jMoney) {
		super(name, id, xMoney);
		this.jMoney=jMoney;
		// TODO Auto-generated constructor stub
	}

	@Override
	public void work() {
		// TODO Auto-generated method stub
		System.out.println("管理");
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值