Hướng dẫn what is final class and final method php? - lớp cuối cùng và phương thức cuối cùng 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

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

Nếu chúng tôi khởi tạo một biến với từ khóa cuối cùng, thì chúng tôi không thể sửa đổi giá trị của nó. Nếu chúng ta khai báo một phương thức là cuối cùng, thì nó không thể bị ghi đè bởi bất kỳ lớp con nào. Và nếu chúng ta khai báo một lớp là cuối cùng, chúng ta sẽ hạn chế các lớp khác để kế thừa hoặc mở rộng nó.If we declare a method as final, then it cannot be overridden by any subclasses. And, if we declare a class as final, we restrict the other classes to inherit or extend it.

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

Định nghĩa và cách sử dụ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 đè.used to prevent a class from being inherited and to prevent inherited method from being overridden.

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

Phương pháp cuối cùng Một phương pháp cuối cùng không thể được ghi đè hoặc ẩn bởi các lớp con.Điều này được sử dụng để ngăn chặn hành vi bất ngờ từ một lớp con thay đổi một phương pháp có thể rất quan trọng đối với chức năng hoặc tính nhất quán của lớp.Ví dụ: cơ sở lớp công khai {công khai void m1 () {...cannot be overridden or hidden by subclasses. This is used to prevent unexpected behavior from a subclass altering a method that may be crucial to the function or consistency of the class. Example: public class Base { public void m1() {...

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.