如何下载网站模板文件在哪里企业名称预先核准网上申请系统
web/
2025/10/2 3:22:39/
文章来源:
如何下载网站模板文件在哪里,企业名称预先核准网上申请系统,晋州网站建设哪家好,word 添加 wordpress一、类#xff08;class#xff09;和 对象#xff08;object#xff09;
1、类
类就是对客观的一类事物的抽象。用一个class关键字来描述和Java一样#xff0c;在这个类中可以拥有这一类事物的属性#xff0c;行为等等。
2、为什么要有对象
在java中的一个class既可… 一、类class和 对象object
1、类
类就是对客观的一类事物的抽象。用一个class关键字来描述和Java一样在这个类中可以拥有这一类事物的属性行为等等。
2、为什么要有对象
在java中的一个class既可以拥有非静态的成员也可以拥有静态static的成员。但是在scala中的class结构中只能拥有非静态。为了给scala中的类也来提供类似于java中的静态成员的功能于是乎就有了Object对象这个结构。
3、对象
class中定义的main是无法运行因为class结构中只能拥有非静态而object所修饰的结构中的所有的成员都是static静态所以object的作用1、给Scala类提供程序运行的入口静态的main函数。2、给Scala类也来提供静态成员——Scala类的伴生对象来实现
class ScalaClassTest {//定义属性 注解与private不能共存BeanProperty var id 11//用val修饰的变量是只读变量有getter没有setter方法相当于Java中的finalval hobbyplay//没有指定初始值时用下划线代替必须补全数据类型var age:Int_//private 修饰的属性只能在本类或伴生对象中进行调用private val namexiao//加this只能在本类中调用private[this] val color pink//定义方法def hello(){println(我是类当中的一个方法color)}
}object ScalaClassTest{def main(args: Array[String]): Unit {//创建对象val snew ScalaClassTest//调用属性println(s.id)println(s.hobby)println(s.name)s.hello()//真正的sets.id_(222)println(s.id)//调用get/set方法s.setId(333)println(s.getId)}
}
4、伴生类和伴生对象
同一个scala源文件中可以包含类名相同的一个class和object这在java中是不被允许的同时上述的这种单例的构造结果可以看到对一个class似乎也提供了静态的功能。把这种结构和class在同一个源文件.scala中同名object结构称之为该类的伴生对象把该类称之为该object的伴生类。注1.伴生对象和伴生类的私有属性可以相互调用
class ClassAndObject {var id 13val hobby readprivate val color bluedef hello(){println(dahuangClassAndObject.con)}
}object ClassAndObject{private val con看大门def main(args: Array[String]): Unit {//创建对象val c new ClassAndObject//调用伴生类当中的非私有属性println(c.id)println(c.hobby)//调用伴生类中的私有属性println(c.color)//调用方法c.hello()}
}
2.要想使用伴生对象创建本类的对象必须要让本伴生对象复写一个apply方法该apply方法的参数列表对应的是本类构造器的参数列表
//在类名后面与类交织在一起的就是主构造器
//如果没加var就只是构造参数如果加上var修饰就升级为属性
class ApplyTest(name:String,age:Int) {println(name)println(age)var colorpink//创建辅助构造器def this(name:String,age:Int,color:String){//辅助构造器的首行必须调用主构造器或其他辅助构造器this(name,age)this.colorcolorprintln(color)}
}object ApplyTest{//使用apply方法创建def apply(name: String, age: Int): ApplyTest {println(调用了主构造器)new ApplyTest(name, age)}def apply(name: String, age: Int, color:String): ApplyTest {println(调用了辅助构造器)new ApplyTest(name, age, color)}def main(args: Array[String]): Unit {//调用了主构造器val a ApplyTest(haha,32,pin)//调用ApplyTest对象中对应的apply方法//调用了辅助构造器val a1 ApplyTest(na,88)}
} 二、继承
1、特点
1子类可以继承父类的所有非私有(private)非静态的成员(变量和成员方法)。
2可以添加自己独有的成员也可以对父类的相关方法进行覆盖/重写
3被final修饰的父类成员子类不可以继承
4被protected修饰的父类成员子类可以继承
5子类的访问权限必须要大于等于父类
class ExtentsTest {val id 12protected var age:Int 0def hello(){println(我是父类当中的方法)}
}class Test extends ExtentsTest{val name xiaohuangage20def bye(){println(我是子类当中的方法age)}
}object enter1{def main(args: Array[String]): Unit {val test new Test//调用父类当中的属性和方法println(test.id)test.hello()//调用自己本身的属性和方法println(test.name)test.bye()}
}
2.protected受保护字段和方法
特点 (1Java只能被子类访问同时必须要在本包下面被访问 2Scala在Java的基础之上可以做到更灵活、更精准的访问权限控制。scala中提供了一个更加强大的功能来精确的控制一个成员的访问权限。就只有private和protected在后面加上中括号[],[]里面写上要在哪一个范围内可以被访问
三、抽象类
scala中的抽象类也是使用abstract关键字来进行定义同时该抽象类中既可以有抽象方法也可以有非抽象方法scala中的抽象方法可以省略abstract关键字。
abstract class AbstractTest {val name:Stringdef sayHello(){println(我是父类当中原装的方法)}
}class test extends AbstractTest{//子类重写父类中的抽象属性override val name: String cici//子类重写父类当中的非抽象方法override def sayHello(): Unit {println(我是父类当中被重写的方法)}//子类独有的方法调用父类当中的方法def only()super.sayHello()}object test{def main(args: Array[String]): Unit {val t new test//调用属性和方法println(t.name)t.sayHello()//调用自身的方法t.only()}
}四、Trait特质 Scala中的这个继承和java的继承有一个缺陷只能进行单继承可以进行多层继承但是多层继承又有要求类与类之间必须具有继承关系这显然不一定满足还是有局限的。所以在java中推出了接口interface这个概念来满足多重继承只不过这里不叫继承而称之为多实现使用关键字implements来连接多个接口interface之间使用,进行分割。 Scala对于同样的需求设计出了另外一个结构——trait特质。trait的功能要比java中的接口强大的多不仅仅拥有抽象方法还可以拥有非抽象方法同时可以多重扩展trait扩展特质的时候使用关键extends多个特质之间使用with进行连接。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85398.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!