抽象 abstract

一、定义

抽象类:被abstract修饰的类
抽象方法:被abstract修饰的方法(抽象方法没有方法体)

二、特点

  1. 抽象方法一定要在抽象类中,但是抽象类中可以没有抽象方法。
  2. 抽象类中可以存在普通方法。
public abstract class Person{//抽象类
   public abstract void sleep();//抽象方法
   public abstract String eat(String food);//抽象方法
   public void drink(){//普通方法
   	System.out.println("正在喝水");
   }
    int age=15;//普通变量
}
  1. 抽象类不能实例化。Person p = new person();会报错,但可以直接使用抽象类中静态的内容。System.out.println(Person.age);//输出15
  2. 抽象类必须被重写才能使用,但是方法可以被多次重写。
  3. abstract不能和final、static、private、nation一起使用。

三、使用

具体的子类: 重写抽象父类中的所有抽象方法,按需新增其他内容

抽象类的对象必须经过向上转型之后才可以得到实例化对象

public abstract class Person{//抽象类
   public abstract void sleep();
   public abstract String eat(String food);
   public void drink(){
   	System.out.println("正在喝水");
   }
    int age;
}

public class Student extends Person{
   @Override//重写
   public void sleep() {
   	System.out.println("每天11点睡觉");
   }
   @Override//重写所有抽象方法
   public String eat(String food)
   	System.out.println("每天吃"+food);
   }
   void study(){//按需新增
   	System.out.println("每天学习到深夜");
   }
}
public class Test {
   public static void main(String[] args) {
   Person  p =new Student();//向上转型
   	p.sleep();//每天11点睡觉  子类中的重写
   	p.eat("营养餐");//每天吃营养餐  子类中的重写
   	p.drink();//正在喝水  父类中的普通方法
   	//p.study();//子类中的新增方法,向上转型父类引用对子类新增方法不可见,语句错误
   	
   	Student s = (Student)p;
   	s.sleep();//每天11点睡觉  子类中的重写
   	s.eat("营养餐");//每天吃营养餐  子类中的重写
   	s.drink();//正在喝水  父类中的普通方法
   	s.study();//每天学习到深夜 子类的新增方法
   }
}
抽象子类: 按需重写抽象方法,按需新增,但是也要有具体的子类(见上方)才可以使用
 public abstract class Person{//抽象类
	public abstract void sleep();
	public abstract String eat(String food);
	public void drink(){
		System.out.println("正在喝水");
	}
	 int age;
}

public abstract class Teacher extends Person{
	@Override//重写
	public void sleep() {
		System.out.println("每天12点睡觉");
	}
	void work(){//新增
		System.out.println("授课");
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值