面向对象

java第一天:

 

如:一个木匠要做一个箱子

面向过程:不去想要去什么样的箱子,随需取用工具

面向对象:先想好要做的箱子,在去找到相对应的工具

面向对象的三大特征:封装,继承和多态

封装:对外部是不可见,保护类中的操作不被外部直接操作

继承:继承父类所拥有的

多态:根据传入的参数不同和参入的参数的个数不同,调用的方法也不同。

面向过程:比较专注于解决问题。

面向对象:集中于设计,分析问题来解决问题。

 

二、类与对象

类:是一个共性的产物,就像是一个模板,根据模板生产出需要的产品

对象:

总结:1.没有类就没有对象

2.没有对象类就不能使用

3.对象的所有的所有活动范围在类中已经定义出来了

三、类与对象的定义

类的组成:属性,方法。

属性与之前的变量是一样的,数据类型就是使用java的两种数据类型:基本数据类型、引用数据类型。

但是,此时在方法的定义上与之前直接使用主方法调用的时候声明不一致的是,不再出现tatic关键字。

建立一个类:里面建立两个属性和一个方法,方法里面写出两个属性的输出。建立一个测试类,建立main方法,new出一个新的对象,并且为对象来赋值和调用方法。

Person per =null;代表着建立了一个对象但是没有被实例化,就会出现异常,“空指针”

实际上对于对象的产生,也是与数组一样的,需要划分堆—栈空间的。

1,对象实际上是保存在栈内存的:Person per = null

2, 实例化之后对象会开辟对应的堆内存空间:per = new Person();

在堆内存中实际上存放的是对象的各个属性,因为对象中只能依靠属性的不同来区分。

内存的划分:

因为是声明了两个对象,所以在栈内存中开辟了两个空间,保存了两个对象,之后此两个对象分别实例化,只要一出现关键字“new”就表示要开辟新的内存空间。

引用传递

所谓引用传递:就是将堆内存空间的使用权交给了其他的对象,就相当于给堆内存空间起了一个别名。

 

Person per1=null;

Person per2=null;只是在栈中开辟了一个空间,堆内存中出现了空值。

per1 = per2,值得是两个对象同时指向了堆内存。

per1.name="张三"

per1.age=30,代表着给给堆内存赋值,输出的两个对象的结果都是一样的。

per2.age=33;是单纯的给per2.age的值赋值。最后输出的结果name="张三",age="3"

per2 = per1;指的是把per1赋给了per2,所以此时per2里面有两个堆内存空间,要实行一妻一夫制,有了一个新的所以要摒弃原有的。最后的一个就是在堆内存中就会产生垃圾。

从本程序中得到的结论总结:一个栈内存只能引用一个推内存空间,但是一个推内存中可以被多个栈内存所同时指向。

在Java中不用的内存空间就称为“垃圾空间”,垃圾空间要等待垃圾收集机制进行空间释放,垃圾收集机制成为“GC”;

二、封装性

在给对象赋值时,age属性为负数时,不会影响程序的运行。但是生活中,没有年龄会出现负数,所以不符合实际,哪怕年龄是0也是可以的。CSDN

因为在类中的操作都是都是外部可见的,可以直接访问,这时就可以通过private来封装。

封装属性:private 数据类型 属性名称 = 属性值;

封装方法:private 返回值类型 void 方法名(参数)

在访问中为了保证访问的时侯,访问的是本类中的方法,要加上this关键字,this.方法名称()。

五、类的图形表示

六、构造方法

在类中都存在一个构造方法,其目的是为类中的属性初始化的。

构造方法:方法名和类型相同,无返回值,连void也不能写。当使用关键字new的时候才会调用构造方法。系统会默认一个无参的构造方法,当再次声明一个有参的构造方法是都会把无参的构造方法给覆盖。

七、匿名对象

可以理解为给对象起了一个别名。例如:per = new Person.name;

八、多态

多态:某一个事物在不同时刻所表现出来的不同形态。例如:自己:在学校时学生,在家这就是一个孩子,但都是一个人。

实现多态的前提:1.要有继承,2.实现重写。3,父类引用子类的对象。

在多态中非静态的方法调用子类,其他的都是调用父类。

研究多态分了三种情况:

1. 多态的局部变量

     在多态中,对于局部变量,调用父类的变量

2. 多态的局部方法

     在多态中,对于局部方法,调用子类的方法

3. 多态的局部静态方法

在多态中,对于局部静态方法,调用父类的方法

 

在多态中,非静态方法调用子类,其他调用父类。

向上向下转型

  自动的

  强制的

 

1向下转型能够调用子类所独有的方法。

总结:多态就是子类和父类相互转换的过程。主要研究多态中方法和变量调用。多态的向上向下转型的意义就是能够让我们调用重写的方法和子类独有的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值