我想在子类中重写Private innerclass方法,是否有可能或任何其他方式做到这一点?

时间:2018-06-27 09:59:19

标签: java oop inheritance polymorphism core

有什么方法可以扩展外部类并重写方法?

func sendStoreCalls(parameters: Dictionary<Int, Dictionary<String, Any>>) {

        var params: Parameters = [:]
        var par: Parameters = [:]
        var pa: [String:Any] = [:]
        var i = 0
        for (_, param) in parameters {
            if param["isSend"] as! Int == 0 {
                par["duration"] = param["callTime"]
                par["sms"] = "0"
                let callDate: String = param["callDate"] as! String
                par["type"] = param["callType"]
                par["call_date"] = callDate.replacingOccurrences(of: " ", with: "+", options: .literal, range: nil)
                if param["callNumber"] as! String != "" {
                    par["number"] = param["callNumber"]
                }
                params[String(i)] = par
                i += 1
            }
        }

        pa["calls"] = params

        let token: String = SharedPreferences.getPrefToken()!

        let bufferedParams = pa.queryParameters

        let transformedPar = bufferedParams.replacingOccurrences(of: "%5B", with: "%7B", options: .literal, range: nil).replacingOccurrences(of: "%5D", with: "%7D", options: .literal, range: nil)

        let trn = transformedPar.replacingOccurrences(of: "%C2A0", with: "", options: .literal, range: nil).replacingOccurrences(of: "%20", with: "", options: .literal, range: nil)

        let url = "https://url.com?api_token=\(token)"

        Alamofire.request(url, method: .post, encoding: JSONStringArrayEncoding.init(string: trn))
            .responseJSON {
                response in
                print(NSString(data: (response.request?.httpBody)!, encoding: String.Encoding.utf8.rawValue)!)
                switch response.result {
                case .success(let value):
                    let json = JSON(value)
                    print(json["message"].rawString()!)
                case .failure(let error):
                    if let data = response.data {
                        print("ERROR!!!")
                        print(String(data: data, encoding: String.Encoding.utf8)!)
                    }
                    print(error)
                }
            }
    }

1 个答案:

答案 0 :(得分:1)

您只能覆盖同一外部类中的私有类。例如

class a {

    public String demofield;

    private class democlass {
        public demomethod() {
        } 
    }

    private class demosubclass extends democlass {
        @Override
        public demomethod() {
        } 
    }

使用private可以防止其他任何类对其进行访问。