-
[Dart] Libraries & imports (접근제한자)Flutter/dart 2024. 5. 19. 22:35
1. Public
별도로 명시하지 않으면 기본적으로 Public. 다른 모든 클래스나 파일에서 접근이 가능하다.
2. Private
변수나 메서드 이름 앞에 _ 를 붙이면 된다.
해당 클래스나 라이브러리 내에서만 접근이 가능하다.3. library (라이브러리 스코프)
같은 library로 묶인 파일들은 패키지의 private 멤버에 접근할 수 있다.
part - 한 라이브러리 파일 내에서 서브파일들을 지정한다.
part of - 라이브러리의 서브파일은 라이브러리의 private 변수에 접근할 수 있다.library.dart (메인 라이브러리 파일)
library my_library; part 'part1.dart'; part 'part2.dart'; class LibraryClass { String _privateVariable = 'This is private'; void _privateMethod() { print('This is a private method'); } }
part1.dart (서브파일 1)
part of my_library; void accessPrivateMember() { LibraryClass lib = LibraryClass(); print(lib._privateVariable); // 접근 가능 lib._privateMethod(); // 접근 가능 } class Part1Class { String _privateVariablePart1 = 'Private in Part1'; void _privateMethodPart1() { print('Private method in Part1'); } // part1과 part2 서브파일 간에는 서로 접근 불가능. void accessPart2() { // 아래의 코드는 에러를 발생시킵니다. // Part2Class part2 = Part2Class(); // print(part2._privateVariablePart2); // 접근 불가 // part2._privateMethodPart2(); // 접근 불가 } }
part2.dart (서브 파일 2)
part of my_library; void anotherAccessPrivateMember() { LibraryClass lib = LibraryClass(); print(lib._privateVariable); // 접근 가능 lib._privateMethod(); // 접근 가능 } class Part2Class { String _privateVariablePart2 = 'Private in Part2'; void _privateMethodPart2() { print('Private method in Part2'); } // part1과 part2 서브파일 간에는 서로 접근 불가능. void accessPart1() { // 아래의 코드는 에러를 발생시킵니다. // Part1Class part1 = Part1Class(); // print(part1._privateVariablePart1); // 접근 불가 // part1._privateMethodPart1(); // 접근 불가 } }