When assigning Bike b = new Splender();, you assign the variable b a type of Bike. To access methods of Splender, you need to cast: ((Splender) b).run2();
As I saw your comment: implementing an interface results in the same compile "problem" that the compiler does not know about the 'specialized' methods, he will only know the interfaces methdods. But casting will work there too.
The only way to avoid this would be to move run2() to the interface which would be a contradiction to your question/use case