extends,with关键字的区别
来源:互联网 发布:两电一邮 知乎 编辑:程序博客网 时间:2024/05/28 15:08
package withextends.diff/** * Created by jack on 2017/8/1. */trait Abstract { type T def gett(x: T): T def init: T}abstract class A { val v: String def m: String}//class ab extends A with Abstract{ override val v: String = _ override def m: String = "method" override type T = String override def gett(x: String): String = { this.m } override def init: String = "init"}class wes {}object Test extends App { val x = new ab val y = new wes with Abstract { override type T = this.type override def gett(x: this.type): this.type = ??? override def init: this.type = ??? } //compile error /*val z = new wes extends A { }*/ type y = ab with A //compile error /*type z = ab extens A*/}
总结一下extends和with的区别:
1、无论是继承abstract class或者混入trait,对于一个要实现的类来说,必须先用extends,剩下的用with,否则编译的时候就会出错
当同时实现abstract class和trait的时候,abstract class必须在前,而trait必须在后,如果仅实现其一的话,只可以用extends
2、当直接new一个实现了trait的对象的时候的时候是可以使用with关键字的
3、T with U可以是一个新的type,但是T extends U并不是一个新的类型
阅读全文
0 0
- extends,with关键字的区别
- extends和implements的区别
- extends 和 implements 的区别
- implements3与Extends的区别
- extends和implements的区别
- extends和implements的区别
- extends和implements的区别
- Interface、extends、implement的区别
- extends与implements的区别
- implements和extends的区别
- PHP 类的继承 extends 关键字
- PHP 类的继承 extends 关键字
- PHP 类的继承 extends 关键字
- scala中extends和with的使用
- <? extends SomeClass>与<T extends SomeClass>的区别
- 继承关键字 :extends
- java继承关键字extends
- Java之extends关键字
- (2017多校训练第二场)HDU
- [CTF]python求crc32值的方法
- Codeforces Round #427 (Div. 2)C. Star sky 暴力D. Palindromic characteristics
- Linux安装ftp组件
- codeforces 835C Star sky(二维树状数组)
- extends,with关键字的区别
- Linux下的常用命令(三)-scp,lsof
- Codeforces 835C
- MySQL插入中文字符不成功问题解决
- 基于AspectJ实现AOP
- 设计模式之策略模式
- webpack性能优化
- 数据结构顺序表的“增删改查”功能实现
- 使用ssh正向连接、反向连接、做socks代理的方法