java基础之抽象和接口

1、 instanceof  这是一个运算符,只能够返回 true 或者 false

         用法:  

                 x instanceof y
          判断 x 是否为 y 的一个实例

2、抽象 abstract  :1) 任何类都可以抽象

                   2)空类抽象作为标识类

                   3)类中有一个抽象方法,该类必为抽象类

                   4)抽象类不能实例化

                   5)抽象类通过继承来实现

                   6)抽象类可以包含非抽象的方法

                   7)静态、构造方法不能抽象

    用法:

            

              abstract class 类名{
                      abstract    返回值类型  方法名(参数列表);//  因为是抽象方法不能实现,不能再参数列表之后写入语句块 { }
              }

下面讲述一个例子来帮助理解:

abstract class Employee{	//Employee 为一个抽象类
	private String name;	//私有属性
	private String number;
	public Employee(){	}	//无参构造方法,当你重新写入了一个有参构造方法,一定要再写一个无参的,防止覆盖
	public Employee(String name,String number){	//有参构造方法
		this.name=name;
		this.number=number;
	}
	public String  getName(){
		return name;
	}
	public String  getNumber(){
		return number;
	}
	public abstract double earnings();
	public String toString(){
		return "姓名:"+name+"\t社保号码"+number;
	}
}

下面是月薪雇员 和 时薪雇员 对抽象父类的继承和实现
class SalariedEmployee extends Employee{ //继承了Employee 抽象类
	private double weeklysalary;
	public SalariedEmployee(){	}
	public SalariedEmployee(String name,String number,double weeklysalary){	
		super(name,number);	// name 和 number 都是继承父类 Employee 的属性
		setWeeklysalary( weeklysalary);
	}
	public void setWeeklysalary(double weeklysalary){
		if(weeklysalary>100){
			this.weeklysalary=weeklysalary;
		}else{
			this.weeklysalary=100;
		}
	}
	//下面是对抽象类中的 earnings 和 toString 方法的重写 
	public double earnings( ){
		return weeklysalary;
	}
	public String toString(){
		return super.toString()+"\t月薪:"+weeklysalary;
	}
	
}

class HourlyEmployee extends Employee{  //继承了Employee 抽象类
	private int hours;
	private double wage;
	public HourlyEmployee(){	}
	public HourlyEmployee(String name,String number,int hours,double wage){
		super(name,number);
		setHours(hours);
		this.wage=wage;
	}
	public void setHours( int hours ){
		if(hours>48){
			this.hours=hours;
		}else{
			this.hours=48;
		}
	}
	public void setWage( double wage ){
		if(wage>10){
			this.wage=wage;
		}else{
			this.wage=10;
		}
	}
	//下面是对抽象类中的 earnings 和 toString 方法的重写 
	public double earnings(){
		if(hours>40){
			return 40*wage+(hours-40)*wage*1.5;
		}else{
			return 40*wage;
		}
		
	}
	public String toString(){
		return super.toString()+"\t时新:"+earnings();
	}
	
}

测试类比较简单,大家可以自己试着写写,本人写的简单源代码也有上传。四个类全部在同一文件中,所以上述三个类都没有 public 权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值