swift 류 의 패키지, 계승, 재 작성, 다 중
패키지 (Encapsulation) 는 프로그램의 구현 디 테 일 을 숨 기 는 방법 중 하 나 는 데이터 와 알고리즘 을 보호 하 는 것 입 니 다. 코드 가 쉽게 이해 되 고 유지 되 며 실현 수단 의 접근 권한 제어 기본 internal public: 어디서 든 internal 에 접근 할 수 있 습 니 다. 모듈 framwork 정적 라 이브 러 리 에 서 는 private 에 접근 할 수 있 습 니 다. 정의 할 수 있 는 파일 만 사용 할 수 있 습 니 다.
속성 클래스 를 저장 하면 데 이 터 를 직접 저장 할 수 있 는 속성 구성원 변 수 를 가 져 올 수 있 습 니 다. 예 를 들 어 var name = "xiaomao" 는 속성 클래스 를 설정 하거나 수정 할 수 있 는 시기 입 니 다. 예 를 들 어:
class Animal{
var name:String!
var age:Double!{
willSet(newValue){print("\(age) :\(newValue)")}
didSet{print(" :\(age)")}
}
init(){
name="aaa"
age=10
}
}
테스트:
var ani=Animal()
ani.age=28
출력:
10.0 :28.0
:28.0
계산 속성 자 체 는 데 이 터 를 저장 할 수 없 으 며 대상 의 다른 데이터 에 의 해 계산 된다. 예 를 들 어 하나의 원 을 정의 하여 반지름 을 확정 하면 면적 을 확정 할 수 있 고 반지름 도 확정 할 수 있다.
class Circle {
var r:Double=0
var area:Double!{
set(newArea){
print(" :",area," :",newArea)
r=sqrt(newArea/3.14)
}
get{return r*r*3.14}
}
}
테스트:
var cir=Circle()
cir.r=10
print(" :",cir.r," :",cir.area)
cir.area=3.14
print(" :",cir.r," :",cir.area)
출력:
: 10.0 : 314.0
: 314.0 : 3.14
: 1.0 : 3.14
```
** (inherita):**
swfit
** ( ):**
override
:
```
class Animal{
var name:String!
var age:Double=0
}
var weigth:Double!
init(){
name="animal"
age=10
weigth=10
}
func eat() {
print(name," !")
}
}
```
Animal eat() bite()
```
class Dog: Animal {
func bite() {
print(name," !")
}
override func eat() {
print(name," ")
}
}
```
Animal eat() claw()
```
class Cat: Animal {
func claw() {
print(name," ")
}
override func eat() {
print(name," ")
}
}
```
:
```
let cat1=Cat()
cat1.name=" "
var dog1=Dog()
dog1.name=" "
var ani=Animal()
ani.name=" "
dog1.bite()
cat1.claw()
dog1.eat()
cat1.eat()
ani.eat()
//Animal Dog
//dog1=Animal()
//
// Cannot assign value of type 'Animal' to type 'Dog'
ani=Dog()
ani.name=" "
ani.eat()
// Dog bite()
dog1=ani as! Dog
dog1.bite()
// eat()
ani=Cat()
ani.name=" "
ani.eat()
```
```
!
!
!
```
** (Polymorphism)**
( ),
! , ( ) , ** **!
```
var ani=Animal()
ani.eat()
ani=Dog()
ani.eat()
ani=Cat()
ani.eat()
```
```
animal !
animal
animal
```
** **
protocol ( )
[http://www.jianshu.com/p/4988132b2b86](http://www.jianshu.com/p/4988132b2b86)
extension( )
[http://www.jianshu.com/p/43acce50c680](http://www.jianshu.com/p/43acce50c680)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.