JAVA---abstract

JAVA---abstract

  • abstract可以用来修饰的结构;类、方法

    • abstract修饰类:抽象类
      • 此类不能实例化
      • 抽象类中一定有构造器,用于子类实例化时调用
    • abstract修饰方法:抽象方法
      • 抽象方法只有方法的声明,没有方法体
      • 包含抽象方法的类,一定是抽象类,然而抽象类中可以没有抽象方法。
      • 若子类重写了父类中的所有的抽象方法后,则该子类可实例化,若子类没有重写父类中的所有的抽象方法,则该子类也必须是一个抽象类。
    package exer;
    
    public class Exer {
    	public static void main(String[] args) {
    		Student s=new Student();
    		s.sleep();
    	}
    }
    //抽象类
    abstract class Person{
    	String name;
    	public Person(){
    		
    	}
    	//抽象方法
    	abstract public void sleep();
    	
    }
    class Student extends Person{
    	public void sleep(){
    		System.out.println("学生睡觉");
    	}
    }
    
    
  • abstract使用上的注意点:

    • abstract不能用来修饰:属性、构造器等结构
    • abstract不能用来修饰私有方法、静态方法、final的方法、final的类

练习:

package exer;


public class Exer {
	public static void main(String[] args) {
		Employee manger=new Manager("张三", 1, 1000, 2000);
		manger.work();
		Employee commonEmployee=new CommonEmployee();
		commonEmployee.work();
	}
}
/*
 * 编写一个Employee类,声明为抽象类,
 * 包含如下三个属性:name,id,salary
 * 提供必要的构造器和抽象方法:work()
 * 
 */
abstract class Employee{
	private String name;
	private int id;
	private double salary;
	public Employee(){
		
	}
	public Employee(String name,int id,double salary){
		this.name=name;
		this.id=id;
		this.salary=salary;
	}
	public abstract void work();
}
/*
 * 声明一个Manager类,
 * 他既是员工,还具有奖金(bonus)属性
 */
class Manager extends Employee{
	private double bonus;
	public Manager(double bonus){
		super();
		this.bonus=bonus;
	}
	public Manager(String name,int id,double salary,double bonus){
		super(name,id,salary);
		this.bonus=bonus;
	}
	
	public void work(){
		System.out.println("管理员工");
	}
	
}
/*
 * 创建一个CommonEmployee类,
 * 他是员工
 */
class CommonEmployee extends Employee{
	public void work(){
		System.out.println("生产产品");
	}
}


posted @ 2022-01-26 16:58  ice--cream  阅读(33)  评论(0编辑  收藏  举报