abstract关键字及实现的学习

本文深入探讨了Java中的abstract关键字,包括如何使用它来声明抽象类和抽象方法。阐述了抽象类不能被实例化,子类继承抽象类必须实现其所有抽象方法。还提到,abstract类中可以包含构造方法、final方法和static方法,并讨论了final关键字的使用。文章通过示例介绍了父类、子类的定义和测试类的编写,最后展示了运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值