面向对象编程介绍和入门案例|学习笔记

简介: 快速学习面向对象编程介绍和入门案例。

开发者学堂课程【Scala 核心编程-基础:面向对象编程介绍和入门案例】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8940


面向对象编程介绍和入门案例

 

目录:

一、类与对象

二、快速入门-面向对象的方式解决养猫问题

三、总结

 

一、类与对象

1.基本的概念

养猫的问题就是提出类与对象的一个关系有一个张老太太养了两只猫,一个叫小白今年三岁,还有一个叫小花今年十岁。花色请编写一个程序,当用户输入小猫名字时,就显示该猫的名字、年龄和颜色。如果用户输入的小猫名字错误,则显示没有真正猫。如果没有类与对象关系,很难去处理

这个猫有三个属性类型不一样,用变量来保存不行。使用普通的变量不好管理如果用三个变量来分别去管理猫的信息,将来就散了。将来张老太太养的不是两只猫,养的是2000只猫。是200乘以3,就是600个变量其实真正这个面向对象的原因没有那么复杂。

2.面向对象处理要解决什

它出现了一个新的数据,这个时候就要使用一种新的类数据类型。这个数据类型要满足两个特点,第一个可以管理多个不同类型的数据,在这个基础上做一个扩展,这个新的数据类型不但能够去管理多个不同类型的数据,还希望这个类型可以对属性进行操作。最核心的就是一个属性一个方法。设计属性来管理不同类型的数据。

第二个是用方法来操作属性最后就引出了类与对象,类和对象类就是一种数据类型对象是一个实例,也可以看的是一种类型,类本身也是一种对象

3.Scala 语言是面向对象的

(1)java 面向对象的编程有语言,但是由于历史的原因,java 中还存在很多非面向对象的内容。Java 面向对象的纯度最多50%,还有5%不是面向对象的东西。比如像基本类型,int 就不是面向对象,int 是一个很基本的数据。Null、静态方法,静态属性都不是属于面向对象。因为静态方法静态属性是类这个级别的。所以严格来讲也不是面向对象。因此在 Scala 里面,把静态的东西拿掉,用伴生对象来替代静态的影子

(2)Scala 语言来自于 java,就是面向对象的,而且 scala 是纯粹的面向对象及 Scala 中一切皆为对象,甚至包括null

(3)在学 scala 面向对象的时候,可以对比 java 学习

4.类与对象的关系

所有特性,属性行为提出来。比如认为一个猫它有年龄,有名字,有颜色就把属性写出来行为就是方法,这个猫可以 run,可以 cry,通过学习可以做算术题,他的计算就是他的行为。属性行为就构成了猫类猫类经过实例化就形成对象,这就是它的一个系统。


二、快速入门-面向对象的方式解决养猫问题

新建一个 com.atguigu.chapter06先建一个临时的一个文件。开始建一个包 oop,再新建一个类 CatDemo 选择object。

package com.atguigu.chapter06.oop

object Catdemo{

def main(args:Array[String]):Unit ={

//创建一只猫

val cat = new Cat

//给的属性赋值

//说明

//1.cat.name 其实并不是直接访问属性,而是 cat.name_$eq(“小白”)

//2.cat.name 等价于 cat.name()

cat.name ="小白"

cat.age = 10

cat.color ="白色"

Println(“ok”)

Printlf(“\n小猫的信息如下:%s %d %s,cat.name,cat.age,cat.color”)

}

}

//定义一个类 Cat

//一个 class cat 对应的字节码文件只有一个 cat.class 默认是 public

class Cat

//定义声明三个属性

//说明

//1.当声明了 var name:String 时。在底层对应 private.name

//2.同时会生成两个 public 方法 name()<=类似=>gettre public name_$eq()=>setter

var name :String=""   //给初始值

var age :Int =_   // 表示给 age 一个默认的值,如果 Int 默认就是0

var color:String=_  // 经 color 默认值,如果 String ,默认就是“”

运行过后,打开反编译器,找到 chapter06在这里面有个 OOP,打开如果写的是 class,那么它只会生成一个类文件如果用 object 会生成两个,在这里它就只会生成一个 class,就是 cat打开 OOP,三个均为私有,并不是public。既然是私有的,什么可以直接去访问名字和年龄?原因是在于在底层还给他生成了一段方法。一个方法name。这个 name 就是根据这个属性的名字生成的。这个函数是返回属性的还有一个就是 name_$eq,这个函数是给它赋值的。如果传进了一个变量,它会把这个变量设置给 this.name

运行结果:

D: \program\jdk8\bin\java

ok~

小猫的信息如下:小白10白色

说明写入信息正确。

 

三、总结

1.案例

(1)问题的描述:

张老太养了只猫猫:一只名字叫小白,今年3岁,白色。还有一只叫小花,今年10岁,花色。请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色,如果用户输入的小猫名错误,则显示 张老太没有这只猫猫。

(2)问题

猫有三个属性,类型不一样。

如果使用普通的变量就不好管理

使用一种新的数据类型(①可以管理多个不同类型的数据[属性])可以对属性进行操作-方法因此类与对象

2.Scala 语言是面向对象的

(1)Jaya 是面向对象的编程语言,由于历史原因,Java 中还存在着非面向对象的内容:基本类型,null,静态方法等。

(2)scala 语言来自于 Java,所以天生就是面向对象的语言,而且 Scala 是纯粹的面向对象的语言,即在 Scala 中,一切皆为对象

(3)在面向对象的学习过程中可以对比着 Java 语言学习

3.快速入门-面向对象的方式解决养猫问题

object Catdemo{

def main(args:Array[string]):Unit ={

//创建一只猫

val cat = new Cat

//给的属性赋值

//说明

//1.cat.name 其实并不是直接访问属性,而是 cat.name_$eq(“小白”)

//2.cat.name 等价于 cat.name()

cat.name ="小白"

cat.age = 10

cat.color ="白色"

Println(“ok”)

Printlf(“\n小猫的信息如下:%s %d %s,cat.name,cat.age,cat.color”)

}

}

//定义一个类 Cat

//一个 class cat 对应的字节码文件只有一个 cat.class 默认是 public

class Cat

//定义声明三个属性

//说明

//1.当声明了 var name:String 时。在底层对应 private.name

//2.同时会生成两个 public 方法 name()<=类似=>gettre public name_$eq()=>setter

var name :String=""   //给初始值

var age :Int =_   // 表示给 age 一个默认的值,如果 Int 默认就是0

var color:string=-   // 经 color 默认值,如果 String 默认就是“”

相关文章
|
6月前
|
存储 编译器 C语言
C++入门: 类和对象笔记总结(上)
C++入门: 类和对象笔记总结(上)
66 0
|
6月前
|
设计模式 算法 程序员
Python从入门到精通:2.1.3深入学习面向对象编程——设计模式的学习与实践
Python从入门到精通:2.1.3深入学习面向对象编程——设计模式的学习与实践
|
6月前
|
C++
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
|
6月前
|
存储 Java
java面向对象进阶
java面向对象进阶
|
6月前
|
人工智能 运维 Java
面向对象进阶
面向对象进阶
68 0
|
11月前
|
机器学习/深度学习 缓存 Java
Java面向对象进阶
Java面向对象进阶
|
设计模式 算法 搜索推荐
C++的编程思想和进阶编程
● 一个模式描述了一个不断发生的问题以及这个问题的解决方案;模式是前人的设计经验上总结出来的对于一些普遍存在的问题提供的通用的解决方案;比如单例模式、观察者模式等 ● 软件中有很多模式 面向对象常见的23中设计模式; 反模式;企业应用架构模式等
54 0
|
存储 开发框架 Java
|
C# C语言
C#学习笔记22: 面向对象编程入门精讲(下)
C#学习笔记22: 面向对象编程入门精讲
C#学习笔记22: 面向对象编程入门精讲(下)