黑马程序员--抽象类

---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ----------------------

抽象类
abstract
  当多个类中出现相同功能,但是功能主体不同,这时可以进行向上抽取,这时,只抽取功能定义,不抽取功能主体。

抽象类的特点:
1.抽象方法一定定义在抽象类中。
2.抽象方法和抽象类都必须被abstract关键字修饰。
3.抽象类不可以用new创建对象,因为调用抽象方法没意义。
4.抽象类中的方法要被调用,必须由子类复写起所有的抽象方法后,建立子类对象掉用。
  如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
   
  

package biji;

public abstract class StudentFu {
 abstract void study();   //父类 抽象了  因为子类功能主体不同  功能要抽象,类名要抽象
  
 


}
package biji;

public class Student1 extends StudentFu {
 void study(){
  System.out.println("2study");
 }

}
package biji;

public class Student2  extends StudentFu{
 void study(){
  System.out.println("1study");
 }


}


package biji;

public class Student4 {
 

 public static void main(String[] args) {
  Student1 s=new Student1();//只能建立子类对象,因为父类是抽象的,不能被new
  s.study();


  //或者写成new Student1().study();这样写直接建立对象并输出。
  
  
 }

 
  
 }//结果2study

 


 

抽象类强迫子类去做些事情
抽象类比一般类多了个抽象函数,就是在类中定义抽象方法,也可以不定义。
抽象类不可以实例化。
 抽象类的作用就是不让该类建立对象


抽象类联系:开个一个系统对员工进行建模,员工包含3个属性:姓名、工号、工资。经理也是员工,除了含有员工的属性外,另外还有奖金属性。用继承的思想设计出员工类和经理类,要求类中提供必要的方法进行属性访问。

package biji;

   public abstract class Yuangong {
 private String name;
 private String id;
 private double money;//定义三个基本属性
 
 Yuangong(String name,String id,double money){
  this.name=name;
  this.id=id;
  this.money=money;
 }//建立构造函数,员工进行初始化。
 
 public abstract void work();//工作,员工和经理都是工作的,但是工作的
        // 具体方式不同,即work方法主体不同。
        //所以整成抽象的。
 
}

package biji;

    public class Jingli extends Yuangong {
 private int jiangjin;//经理类继承自员工类,但是经理独有属性,奖金
 Jingli(String name,String id,double money,int jiangjin){
  super(name,id,money);//直接调用父类的构造函数
  this.jiangjin=jiangjin;
  
 }
 public void work(){
  System.out.println("Jingli work");
 }

}



 

---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值