findViewById выполняет поиск по представлению, у которого есть идентификатор, который вы даете в представлении, с которым вызываете этот метод.
Поэтому, когда вы делаете Button.findViewById(R.id.btn)
, это никогда не должно работать, потому что Button - это класс, а не экземпляр представления.
Когда вы делаете myButton.findViewById(R.id.btn)
, он просматривает myButton, который является экземпляром представления, если есть представление с btn, имеющим идентификатор. Если он есть, верните его, иначе он возвращает ноль.
Когда вы делаете findViewById(R.id.btn)
Вы вызываете этот метод непосредственно из пользовательского кода представления. Часто это внутри деятельности. Затем он ищет в макете этого действия, если есть View, имеющий btn, имеет ID. Если он есть, он возвращает его, в противном случае он возвращает ноль.