1、abstract讲解
abstract修饰的类称谓抽象类
abstract修饰的方法称谓抽象方法
一个类中含有抽象方法,那么这个类必须为抽象类
抽象类不能创建对象
一个类继承了抽象类,那么他必须时间这个抽象类中的抽象方法,如果不实现这个类中的抽象方法,那么这个类也必须为抽象类
抽象类中可以有构造方法,但是构造方法不是用来实例化对象用的
抽象类中的构造方法是提供给子类调用的,不是用来初始化的
抽象类中可以有final修饰的方法
在abstract中可以有final修饰的方法,被final修饰的方法可以被子类调用,但是不可以被子类重写
抽象类中可以有成员方法
抽象类中可以有static方法
abstract可以修饰类,可以修饰方法,但是不可以修饰属性;final可以修饰类,可以修饰方法,可以修饰属性
抽象方法:含有抽象方法的类必须为抽象类,如果父类中有抽象方法,那么子类中必须实现这个抽象方法,如果子类不实现这个抽象方法,那个这个类必须为抽象类
jdk1.8之前,抽象方法是不可以写方法体的。
2、父类
package com.wyq.study;
public abstract class Employer {
private String name;
int age;
public static final int workNo = 10;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
// public void setAge(int age){
// this.age = age;
// }
// public int getAge(){
// return age;
// }
public Employer(){
super();
System.out.println("无参构造"+this.name+"\t"+this.age+"\t"+workNo);
}
public Employer(String name,int age){
super();
this.name = name;
this.age = age;
System.out.println("employer的带参构造"+this.name+"\t"+age+"\t"+workNo);
}
public void work(String work){
System.out.println("在父类中测试员工的工作"+work);
}
public abstract void waitt(String work);
public final void final1(String sfsd){
System.out.println("这里是测试final"+sfsd);
}
}
3、子类
package com.wyq.study;
public class Employee extends Employer{
private String department;
public void setDepartment(String department){
this.department = department;
}
public String getDepartment(){
return department;
}
public Employee(){
super();
System.out.println("这里是子类的无参构造");
}
public Employee(String name,int age,String department){
super(name,age);
this.department = department;
System.out.println("这里是无参构造"+super.workNo+"\t"+super.getName()+"\t"+super.getClass()+"\t"+this.age+"\t"+super.workNo);
}
public void show(){
System.out.println(super.getName()+"\t"+super.age+super.workNo);
}
@Override
public void work(String work) {
super.work(work);
System.out.println("在子类中测试员工的工作是:"+work);
}
@Override
public void waitt(String work) {
System.out.println("这里是实现的关系"+work);
}
}
4、测试类
package com.wyq.study;
public class TestEmp {
public static void main(String[] args) throws InterruptedException {
// Employee e = new Employee("李四",12,"财务部");
// e.show();
// System.out.println(e+"\t"+e.age+"\t"+e.getName()+"\t"+e.getDepartment()+"\t"+e.workNo);
Employee e1 = new Employee("李四",12,"财务部");
// e.waitt("jsldfj");
e1.waitt("阿里巴巴集团");
e1.work("程序员");
e1.final1("这里是测试finall");
}
}
5、输出结果
这里是无参构造10 李四 class com.wyq.study.Employee 12 10
这里是实现的关系阿里巴巴集团
在父类中测试员工的工作程序员
在子类中测试员工的工作是:程序员
这里是测试final这里是测试finall