Hướng dẫn can we inherit final class in php? - chúng ta có thể kế thừa lớp cuối cùng trong php không?

Từ khóa cuối cùng ngăn các lớp con ghi đè một phương thức hoặc hằng số bằng cách tiền tố định nghĩa với final. Nếu bản thân lớp đang được xác định cuối cùng thì nó không thể được mở rộng.

Ví dụ #1 Phương pháp cuối cùng ví dụ

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }

      final public function

moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class

ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>

Ví dụ #2 Ví dụ về lớp cuối cùng

final class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
// As the class is already final, the final keyword is redundant
   
final public function moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class

ChildClass extends BaseClass {
}
// Results in Fatal error: Class ChildClass may not inherit from final class (BaseClass)
?>

Ví dụ #3 Hằng số cuối cùng Ví dụ như của Php 8.1.0

class Foo
{
    final public const 
"foo";
}

class

Bar extends Foo
{
    public const 
"bar";
}
// Fatal error: Bar::X cannot override final constant Foo::X
?>

Lưu ý: Thuộc tính không thể được khai báo cuối cùng: chỉ các lớp, phương thức và hằng số (kể từ Php 8.1.0) có thể được khai báo là cuối cùng. Kể từ Php 8.0.0, các phương thức riêng tư có thể không được khai báo cuối cùng ngoại trừ hàm tạo.: Properties cannot be declared final: only classes, methods, and constants (as of PHP 8.1.0) may be declared as final. As of PHP 8.0.0, private methods may not be declared final except for the constructor.

Penartur tại Yandex Dot Ru ¶

15 năm trước

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
0

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
1

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
2

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
3

Ai đó chấm khác ở nơi khác chấm lưới ¶

8 năm trước

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
4

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
5

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
6

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
7

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
8

Cottton tại I-Stats Dot Net

8 năm trước

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
9

      final public function0

      final public function1

Cottton tại I-Stats Dot Net

8 năm trước

      final public function2

      final public function3

      final public function4

      final public function5

      final public function6

Cottton tại I-Stats Dot Net

Mattsch tại gmail dot com

      final public function7

Santoshjoshi2003 tại Yahoo Dot Co Dot trong ¶

13 năm trước

      final public function8

      final public function5

moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class

ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
0

Ẩn danh ¶

15 năm trước

moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class

ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
1

Ai đó chấm khác ở nơi khác chấm lưới ¶

13 năm trước

moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class

ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
2

moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class

ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
3

moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class

ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
4

moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class

ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
5

moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class

ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
6

moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class

ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
7

Ẩn danh ¶

8 năm trước

moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class

ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
8

moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class

ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
9

final class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
// As the class is already final, the final keyword is redundant
   
final public function moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}
0

Cottton tại I-Stats Dot Net

Mattsch tại gmail dot com

final class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
// As the class is already final, the final keyword is redundant
   
final public function moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}
1

final class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
// As the class is already final, the final keyword is redundant
   
final public function moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}
2

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
3

Santoshjoshi2003 tại Yahoo Dot Co Dot trong ¶

13 năm trước

final class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
// As the class is already final, the final keyword is redundant
   
final public function moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}
4

      final public function5

final class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
// As the class is already final, the final keyword is redundant
   
final public function moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}
6

Ẩn danh ¶

12 năm trước

final class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
// As the class is already final, the final keyword is redundant
   
final public function moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}
7

final class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
// As the class is already final, the final keyword is redundant
   
final public function moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}
8

final class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
// As the class is already final, the final keyword is redundant
   
final public function moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}
9

class0

class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
3

Lớp cuối cùng có thể kế thừa PHP không?

Từ khóa cuối cùng được sử dụng để ngăn chặn một lớp được kế thừa và để ngăn phương pháp kế thừa bị ghi đè. and to prevent inherited method from being overridden.

Các lớp cuối cùng có thể được kế thừa?

Lớp cuối cùng không thể được kế thừa bởi bất kỳ lớp con nào, nếu chúng ta cố gắng kế thừa một lớp cuối cùng, thì trình biên dịch đã đưa ra một lỗi trong quá trình biên dịch., If we try to inherit a final class, then the compiler throws an error during compilation.

Chúng ta có thể mở rộng lớp cuối cùng trong PHP không?

Từ khóa cuối cùng ngăn các lớp con ghi đè một phương thức hoặc hằng số bằng cách tiền tố định nghĩa với cuối cùng.Nếu bản thân lớp đang được xác định cuối cùng thì nó không thể được mở rộng.If the class itself is being defined final then it cannot be extended.

Là hỗ trợ cuối cùng trong PHP?

Từ khóa cuối cùng trong PHP được sử dụng trong bối cảnh khác nhau.Từ khóa cuối cùng chỉ được sử dụng cho các phương thức và lớp.Phương pháp cuối cùng: Khi một phương thức được khai báo là cuối cùng thì không thể thực hiện được phương thức đó.Phương pháp được tuyên bố là cuối cùng do một số lý do thiết kế.The final keyword is used only for methods and classes. Final methods: When a method is declared as final then overriding on that method can not be performed. Methods are declared as final due to some design reasons.