JavaDay3(上)
Java learning_Day3(上)
本人学习视频用的是马士兵的,也在这里献上
<链接:https://pan.baidu.com/s/1qKNGJNh0GgvlJnitTJGqgA>
提取码:fobs
内容
- Java面向对象编程
- 对象和类的概念
- 构造方法(构造函数)
Java 面向对象编程
- 面向对象的基本思想是,从现实世界中客观存在的事物出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式。
- 面向对象更加强调运用人类在日常的思维逻辑中经常采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
对象和类的概念
- 对象通过“属性(attribute)”和“方法(method)”来分别对应事物所具有的静态属性和动态属性。
- 类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的静态和动态属性。
- 类可以看成一类对象的模板,对象可以看成改类的一个具体实例。

关联关系
- 往往一个方法的参数是另一个类的对象
- 关系不紧密

继承关系
- 满足XX是XX(XX is a kind of XX)

聚合关系
- 整体和部分
- 聚合又可以细分为聚集和组合
- 聚集关系中的部分可以隶属于多个整体,充当不同的对象。
- 组合关系的部分隶属于一个整体,充当单一的对象。

实现关系
- 子类对于父类的特定实现方法

多态
具体可以参考:Java_Day4(下)
创建一个简单的对象,拥有属性和方法
public class Dog {
//创建狗这个类
char furColor;
char voice;
int height;
int weight;
//狗拥有抓老鼠这个方法
public void catchMouse(Mouse mouse) {
//catch mouse
mouse.scream(); //老鼠有发出尖叫这个动作(方法)
}
public static void main(String[] args) {
Dog dog = new Dog(); //创建狗这个对象
Mouse mouse = new Mouse(); //创建老鼠这个对象
dog.catchMouse(mouse); //狗拿耗子
}
}
类的定义
- 类的定义主要由两方面组成
- 成员变量
- 方法
1 声明成员变量的格式为:[<modifiers>] type <arrt_name>[=defaultValue];
成员变量
- 成员变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)
- 在定义成员变量是可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化,如下表。
| 成员变量类型 | 取值 |
|---|---|
| byte | 0 |
| short | 0 |
| int | 0 |
| long | 0L |
| char | '\u0000' |
| float | 0.0F |
| double | 0.0D |
| boolean | false |
| 所有引用类型 | NULL |
对象的创建和使用
- 必须使用new关键字创建对象。
- 使用对象(引用).成员变量来引用对象的成员变量。
- 使用对象(引用).方法(参数列表)来调用对象的方法。
- 同一类的每个对象有不同的成员变量存储空间。
- 同一类的每个对象共享该类的方法。
构造方法(构造函数)
- 使用new+构造方法创建一个新的对象。
- 构造函数是定义在Java类中的一个用来初始化对象的函数。
- 构造函数与类同名且没有返回值。
public class Person {
int id;
int age;
Person(int n, int i) { //Person类的构造函数
id = n;
age = i;
}
}
创建对象时,使用构造函数初始化对象的成员变量。
class Test {
public static void main(String[] args) {
Person tom = new Person(1, 25);
Person john = new Person(2, 27);
}
}
当没有指定构造函数时,编译器为类自动添加形如 类名() { } 的无参数构造函数
注意:一旦手动添加了构造函数,编译器将不再默认添加一个无参数构造函数,此时初始化对应的无参数对象编译器将会报错
构造函数对对象初始化后,如何改变对象存储的值? 详见:<file:///F:\github\JavaFile\JavaBasic\JavaSEBasic\Day3(中)_改变引用数据类型的值.md>
JavaDay3(上)的更多相关文章
- Asp.Net Mvc 使用WebUploader 多图片上传
来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...
- [APUE]进程控制(上)
一.进程标识 进程ID 0是调度进程,常常被称为交换进程(swapper).该进程并不执行任何磁盘上的程序--它是内核的一部分,因此也被称为系统进程.进程ID 1是init进程,在自举(bootstr ...
- 关于解决python线上问题的几种有效技术
工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...
- PHP搭建大文件切割分块上传功能
背景 在网站开发中,文件上传是很常见的一个功能.相信很多人都会遇到这种情况,想传一个文件上去,然后网页提示"该文件过大".因为一般情况下,我们都需要对上传的文件大小做限制,防止出现 ...
- 深入浅出Redis-redis底层数据结构(上)
1.概述 相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-valu ...
- jquery.uploadify文件上传组件
1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...
- 在传统.NET Framework 上运行ASP.NET Core项目
新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如<使用 JavaScriptService 在.NET Core 里实现DES加密算法>,我们要估计等到.N ...
- .NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布
众所周知,Red Hat和微软正在努力使.NET Core成为Red Hat企业版Linux (RHEL)系统上的一流开发平台选项.这个团队已经一起工作好几个月了,RHEL对.NET有许多需求.今天在 ...
- Windows 7上执行Cake 报错原因是Powershell 版本问题
在Windows 7 SP1 电脑上执行Cake的的例子 http://cakebuild.net/docs/tutorials/getting-started ,运行./Build.ps1 报下面的 ...
随机推荐
- iOS开发基础--C语言简述(一)
先占个坑,回来再补 需要的运行环境,自行搜寻,工具不止一种,不详细叙述. C语言是一门非常重要的编程语言,与硬件底层直接相关,很多语言到最后的接口封装都会选择C语言,因而C语言一直很受欢迎,也务必掌握 ...
- vue中子组件触发父组件的方法
网上找了几种方法,下面这两种最实用,最明了 方法一:父组件方法返回是字符串或数组时用这种方法 子组件: <template> <button @click="submit& ...
- 「Flink」Flink的状态管理与容错
在Flink中的每个函数和运算符都是有状态的.在处理过程中可以用状态来存储数据,这样可以利用状态来构建复杂操作.为了让状态容错,Flink需要设置checkpoint状态.Flink程序是通过chec ...
- .net平台 通过Windows installer 打包和部署实例操作
Windows installer 打包和部署 1.新建项目. 打开VS,新建项目->其他项目类型->安装和部署(Visual Studio Installer). 注:若VS2013 或 ...
- 为什么选择Spring Boot?
本文概述了各种Spring配置样式,并帮助你了解配置Spring应用程序的复杂性.抽丝剥茧 细说架构那些事——[优锐课] Spring是一个非常流行的基于Java的框架,用于构建Web和企业应用程序. ...
- python爬虫1:第一个爬虫
1.python2.3的库名不同,如果版本不同记得改. Python2.x 有这些库名可用: urllib,urllib2,urllib3,httplib,httplib2,requests Pyth ...
- Docker--数据管理之Volumes
前言:我们知道docker容器内产生或修改的数据仅在该容器内有效,即容器关闭,其之前产生或修改的数据也就删除了,这明显不能满足我们大多数场景的需求.当然这只是默认,docker为我们提供了多种保存数据 ...
- 剑指offer-面试题39-数组中出现次数超过一半的数字-抵消法
/* 题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输 ...
- Go 使用小记
1.不能使用在运行时计算的值实例化这样的数组. 而是使用make初始化具有所需长度的切片. db := ConnMysql() rows, err := db.Query("select r ...
- malloc分配内存的结构
在C/C++,我们都可以使用malloc进行分配大小,单位是字节. malloc实际分配的内存大小和传入的参数其实是不同的. 实际分配的内存大小>传入的参数大小. malloc分配的内存 ...