add missing GRPC_FINAL
diff --git a/include/grpc++/generic_service.h b/include/grpc++/generic_service.h
index 50a3646..724982e 100644
--- a/include/grpc++/generic_service.h
+++ b/include/grpc++/generic_service.h
@@ -43,7 +43,7 @@
 
 typedef ServerAsyncReaderWriter<ByteBuffer, ByteBuffer> GenericServerReaderWriter;
 
-class GenericServerContext : public ServerContext {
+class GenericServerContext GRPC_FINAL : public ServerContext {
  public:
   const grpc::string& method() const { return method_; }
   const grpc::string& host() const { return host_; }
@@ -55,7 +55,7 @@
   grpc::string host_;
 };
 
-class GenericService {
+class GenericService GRPC_FINAL {
  public:
   // TODO(yangg) Once we can add multiple completion queues to the server
   // in c core, add a CompletionQueue* argument to the ctor here.
diff --git a/include/grpc++/generic_stub.h b/include/grpc++/generic_stub.h
index 87396f0..92c4df1 100644
--- a/include/grpc++/generic_stub.h
+++ b/include/grpc++/generic_stub.h
@@ -43,7 +43,7 @@
 
 // Generic stubs provide a type-unsafe interface to call gRPC methods
 // by name.
-class GenericStub {
+class GenericStub GRPC_FINAL {
  public:
   explicit GenericStub(std::shared_ptr<ChannelInterface> channel) : channel_(channel) {}