【Java】抽象类

继承是自上而下的,上层的类更具有通用性,甚至可能只给出方法不给出实现,由子类自己负责去实现。表现在语法上就是方法不含有{}。这样的方法就是抽象方法,用关键字abstract声明。而包含一个或多个抽象方法的类就是抽象类,也必须用abstract声明。

一个类即使不包含抽象方法,也可以声明成abstract,以防止被实例化。

import static java.lang.System.*;

	public final class Demo {
		public static void main(String[] args) {
			Teacher t = new Teacher();
			t.setName("wangming");
			t.work();
			
			Drivers d = new Drivers();
			d.setName("xiaochen");
			d.work();
		}
	}
	
	//define an abstract class
	abstract class People {
		private String name;
		public void setName(String name) {
			this.name = name;
		}
		
		public String getName() {
			return this.name;
		}
		<span style="color:#ff0000;">//abstract method</span>
		public abstract void work();
	}
	
	class Teacher extends People {
		<span style="color:#ff0000;">//the implementing of abstract method in super class</span>
		public void work() {
			out.println("my name is: " + this.getName() + ", is giving a lecture now");
		}
	}
	
	class Drivers extends People {
		public void work() {
			out.println("my name is: " + this.getName() + ", is driving");
		}
	}


注意:

抽象类不能直接使用,必须用子类去实现抽象类,然后使用子类的实例。但是可以创建一个变量,类型是抽象类,并让它指向具体类的一个实例。也就是用抽象类做形参,子类做实参,也就是实现了多态的应用。

不能有抽象构造方法或抽象静态方法。

在下列情况下,一个类将成为抽象类:
当一个类的一个或多个方法是抽象方法时;
当类是一个抽象类的子类,并且不能为任何抽象方法提供任何实现细节或方法主体时;
当一个类实现一个接口,并且不能为任何抽象方法提供实现细节或方法主体时;注意:
这里说的是这些情况下一个类将成为抽象类,没有说抽象类一定会有这些情况。
一个典型的错误:抽象类一定包含抽象方法。 但是反过来说“包含抽象方法的类一定是抽象类”就是正确的。
事实上,抽象类可以是一个完全正常实现的类



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值