在原有类的基础上定义一个类,原有类称为父类,新类称为子类class类名 extends父类名(类体)
class Aniaml(){
var leg=4
def run():Unit={
println("animal run....")
}
}
//继承:不劳而获
class Dog extends Aniaml(){
}
object Test17 {
def main(args: Array[String]): Unit = {
//实例化一个对象:new一个对象
//var a1=new Animal()
//a1.run()
var d1=new Dog()
d1.run()
}
}
当子类从父类继承方法不能满足时,使用override
class Aniaml(){
var leg=4
def run():Unit={
println("animal run....")
}
}
//继承:不劳而获
class Dog extends Aniaml(){
leg=3//对于var修饰的父类的属性,可以直接覆盖
//用override重写(覆盖)父类的同名的方法
override def run(): Unit = {
println(s"${leg}Dog run.....")
}
}
object Test17 {
def main(args: Array[String]): Unit = {
//实例化一个对象:new一个对象
//var a1=new Animal()
//a1.run()
var d1=new Dog()
d1.run()
}
}
先执行父类构造器在子类
class Aniaml(var name:String,var age:Int){
println(s"父类~构造器Animal正在运行.....${name} ${age}")
var leg=4
def run():Unit={
println("animal run....")
}
}
//继承:不劳而获
class Dog(name:String,age:Int) extends Aniaml(name,age){
println(s"子类~构造器Dogz正在运行....${name} ${age}")
leg=3//对于var修饰的父类的属性,可以直接覆盖
//用override重写(覆盖)父类的同名的方法
override def run(): Unit = {
println(s"${leg}条腿的Dog run.....")
}
}
object Test17 {
def main(args: Array[String]): Unit = {
//实例化一个对象:new一个对象
//var a1=new Animal()
//a1.run()
var d1=new Dog(name = "小黑",1)
// d1.run()
}
}
面向语言三个特点:封装,继承,多态(同一操作作用于不同的对象可以有不同的解释,产生不同的执行结果)
class Animal() {
//属性
var name = ""
//方法
def run(): Unit = {
println("animal run...")
}
}
class Dog extends Animal() {
//重写同名的方法
override def run(): Unit = {
println("dog is running...")}
}
class Cat extends Animal() {
override def run(): Unit = {
println("cat is running...")
}
}
object Test17 {
def main(args: Array[String]): Unit = {
val d1=new Dog()
val c1=new Cat()
run(d1)
run(c1)
}
def run(obj:Animal):Unit={
obj.run()
}
}
设计一个Point类。其x和y可以通过构造器提供在设计一个子类Lable继承Point类其构造器接收一个标签值和x,y坐标
class Point(var x:Int,var y:Int){
def print():Unit={
println(s"x=${x},y=${y}")
}
}
//x,y是从Point继承来的所以不需要var修饰符
//label是自己的属性需要写val修饰符
//Point(x,y):要去调用父类的构造器所以这里就不需要去补充数据的类型
class LabelPoint(x:Int,y:Int,var label:String) extends Point(x, y){
override def print():Unit={
println(s"x=${x},y=${y},label=${label}")
}
}
object Test17_1 {
def main(args: Array[String]): Unit = {
val p1=new Point(1,2)
p1.print()
val labelP1=new LabelPoint(1,2,"小王")
labelP1.print()
}
}
标签:run,定义,继承,println,Unit,var,new,def
From: https://blog.csdn.net/zxfgdjfjfjflfllf/article/details/142986034