Hướng dẫn what is final class in php - lớp cuối cùng trong php là gì

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 ¶

12 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

slorenzo tại clug dot org dot ve ¶

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 học cuối cùng là gì?

Một lớp cuối cùng là một lớp không thể mở rộng. Ngoài ra các phương thức có thể được khai báo là cuối cùng để chỉ ra rằng không thể bị ghi đè bởi các lớp con. Ngăn chặn lớp không được phân nhóm có thể đặc biệt hữu ích nếu bạn viết API hoặc thư viện và muốn tránh được mở rộng để thay đổi hành vi cơ sở.a class that can't be extended. Also methods could be declared as final to indicate that cannot be overridden by subclasses. Preventing the class from being subclassed could be particularly useful if you write APIs or libraries and want to avoid being extended to alter base behaviour.

Phương pháp cuối cùng trong PHP là gì?

Phương pháp cuối cùng: Một phương thức được coi là một phương thức cuối cùng nếu nó được đặt trước với từ khóa cuối cùng. Các phương pháp cuối cùng là các phương pháp không thể được ghi đè. Vì vậy, các phương pháp này không thể được ghi đè trong các lớp con/con.methods that cannot be overridden. So, these methods can't be overridden in child/subclasses.

Việc sử dụng lớp cuối cùng là gì?

Mục đích chính của việc sử dụng một lớp được tuyên bố là cuối cùng là để ngăn lớp được phân lớp.Nếu một lớp được đánh dấu là cuối cùng thì không có lớp nào có thể kế thừa bất kỳ tính năng nào từ lớp cuối cùng.Bạn không thể mở rộng một lớp cuối cùng.Nếu bạn thử nó cho bạn một lỗi thời gian biên dịch.to prevent the class from being subclassed. If a class is marked as final then no class can inherit any feature from the final class. You cannot extend a final class. If you try it gives you a compile time error.

Các lớp và phương pháp cuối cùng là gì?

Bạn có thể khai báo một số hoặc tất cả các phương thức của một lớp cuối cùng.Bạn sử dụng từ khóa cuối cùng trong khai báo phương thức để chỉ ra rằng phương thức không thể bị ghi đè bởi các lớp con.Lớp đối tượng thực hiện một số phương thức của nó là cuối cùng.. You use the final keyword in a method declaration to indicate that the method cannot be overridden by subclasses. The Object class does this—a number of its methods are final .