[15]抽象

版权声明:嘤嘤嘤,小白的东西,大牛们应该看不上吧。 https://blog.csdn.net/qq_37384180/article/details/82973828

抽象:功能具备但不具体

抽象的方法需要用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("管理");
	}
}

猜你喜欢

转载自blog.csdn.net/qq_37384180/article/details/82973828
15
今日推荐