重新搞一波 复习巩固

简单记录 慕课网 imooc Java 零基础入门-Java面向对象-面向对象 都是视频课件里的。

面向对象

什么是对象

什么是面向对象

什么是类

什么是属性

什么是方法

类和对象的关系

什么是对象

万物皆对象 客观存在的事物

对象:用来描述客观事物的一个实体,由一组属性和方法构成

对象是类的一个实例,有状态和行为。

我们周围真实的世界,就有很多很多对象,人啦狗啦等等,这些对象都有自己的状态和行为。

对比现实对象和软件对象,它们之间十分相似,

软件对象也有状态和行为,软件对象的状态就是属性,行为通过方法来体现,

软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成的。

属性 方法

状态 行为

类存在于code段,object存在于heap

什么是面向对象

人关注对象

人关注事物信息

类是模子,确定对象将会拥有的特征(属性)和行为(方法)

类是一个模板,它描述一类对象的行为和状态。

类的特点

  • 类是对象的类型
  • 具有相同属性和方法的一组对象的集合

什么是对象的属性和方法

属性:对象具有的各种静态特征

有什么

方法:对象具有的各种动态方法

能做什么

类和对象的关系

类是抽象的概念,仅仅是模板

对象是一个你能够看得到、摸得着得具体实体

类是对象的实例

对象是特定类型的数据

具体开发过程中,先定义类再实例化对象

单一职责原则

单一职责原则,也称为单一功能原则

英文是Single Responsibility Principle 缩写SRP

是面向对象设计中的一个重要原则

一个类,应该有且只有一个引起变化的原因

在程序设计中,尽量把不同职责,放在不同的职责中,即把不同的变化原因,封装到不同的类中。

对象实例化需要了解的

对象实例化

  • 实例化对象的过程可以分为两部分:

    声明对象 Cat one

    实例化对象 new Cat();

    Cat one = new Cat();

    Stack Heap

  • 每次new对象会产生新的实例化对象

    Cat one = new Cat();

    Cat two = new Cat();

  • 多个对象可以指向同一块实例化空间

    Cat one = new Cat();

    Cat two = one;

对象必须被实例化之后才能使用

对象间的引用传递,实际上传递的是堆内存空间的使用权

构造方法

构造方法与类同名且没有返回值

构造方法的语句格式

只能在对象实例化的时候调用

当没有指定构造方法时,系统会自动添加无参的构造方法

当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法了

一个类中可以有多个构造方法

this关键字

  • this:当前对象的默认引用

  • this的使用

    调用成员变量,解决成员属性和局部变量同名冲突

    调用成员方法



调用重载的构造方法



Cat.java

package com.imooc.animal;
/**
* 宠物猫类
* @author imooc
*
*/
public class Cat {
//成员属性:昵称、年龄、体重、品种
String name;//昵称 String类型默认值null
int month;//年龄 int类型默认值0
double weight;//体重 double类型默认值0.0
String species;//品种 public Cat(){
System.out.println("我是无参构造方法");
}
public Cat(String name){
System.out.println("我是带参构造方法");
}
public Cat(String name,int month,double weight,String species){
this();
this.name=name;
this.month=month;
this.weight=weight;
this.species=species;
} // public void Cat(){
// System.out.println("我只是一个普通的方法,恰好方法名叫Cat");
// } //成员方法:跑动、吃东西
//跑动的方法
public void run(){
// Cat();
eat();
System.out.println("小猫快跑");
}
public void run(String name){
System.out.println(name+"快跑");
}
//吃东西的方法
public void eat(){
System.out.println("小猫吃鱼");
}
}

CatTest.java

package com.imooc.animal;

//单一职责原则
public class CatTest {
public static void main(String[] args) {
// 对象实例化
Cat one = new Cat("花花",2,1000,"英国短毛猫");
// 测试
// one.name = "花花";
// one.month = 2;
// one.weight = 1000;
// one.species = "英国短毛猫"; System.out.println("昵称:" + one.name);
System.out.println("年龄:" + one.month);
System.out.println("体重:" + one.weight);
System.out.println("品种:" + one.species);
one.run();
// one.Cat(); }
}

【Java】面向对象的更多相关文章

  1. JAVA面向对象

    JAVA面向对象 对象   我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象   只要是对象--属性和行为(方法)   属性   对象有什么   例如:学生有姓名.学 ...

  2. 理解JAVA - 面向对象(object) - 属性,方法

    理解JAVA - 面向对象(object) - 属性,方法 多态的体现:    向上造型,父类接收子类对象:向上造型:    从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...

  3. Java面向对象㈠ -- 封装

    Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...

  4. 谈谈Java面向对象的三大特性

    Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...

  5. Java面向对象:接口

    Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...

  6. 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  7. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

  8. 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》

    20145212 实验二< Java面向对象程序设计> 实验内容 单元测试 三种代码 伪代码 百分制转五分制: 如果成绩小于60,转成"不及格" 如果成绩在60与70之 ...

  9. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

  10. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

随机推荐

  1. Python 学习笔记 之 02 - 高级特性总结

    切片 语法:  li.[x:y:z]  li为list.tuple等数据类型,x为开始进行切片的位置,y为切片停止的位置(不包含y),z为xy切片后的结果里,每间隔z个元素输出一次结果.  x默认为0 ...

  2. 容器编排系统之Pod资源配置清单基础

    前文我们了解了k8s上的集群管理工具kubectl的基础操作以及相关资源的管理,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14130540.html:今天我 ...

  3. Maven史上最全的pom.xml详解

    下面主要是借鉴 官网的资料 收集而来 主要是为了讲解,用到的很少,但是还是需要了解 ,重点是方便查验资料 <project xmlns="http://maven.apache.org ...

  4. SQL注入及如何解决

    SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗 ...

  5. 图数据库 Nebula Graph 在 Boss 直聘的应用

    本文首发于 Nebula Graph 官方博客:https://nebula-graph.com.cn/posts/nebula-graph-risk-control-boss-zhipin/ 摘要: ...

  6. [.NET] - EventLog.EntryWritten Event

    刚看到在MSND论坛上有人问一个EventLog.EntryWritten Event相关的问题,说是在2015触发了一个2013年的EventWritten的事件,比较好奇,然后查看了下这个类: h ...

  7. (六)、mkdir--创建目录make directory

    一.命令详解与命令格式 在文件系统中创建新的目录, 格式:mkdir   [-选项]   目录名 目录名既可以是相对路径名,也可是相对路径名 选项: -p或者--parent,创建指定路径中所有不存在 ...

  8. 基于数据库、redis和zookeeper实现的分布式锁

    基于数据库 基于数据库(MySQL)的方案,一般分为3类:基于表记录.乐观锁和悲观锁 基于表记录 用表主键或表字段加唯一性索引便可实现,如下: CREATE TABLE `database_lock` ...

  9. [leetcode299] 299. Bulls and Cows

    public String getHint(String secret, String guess) { /* 判断bull 是通过比较两个字符串的每一位,每次相同就删除该字符出现的次数,因为后边的 ...

  10. Java Hash表 数据结构

    思考: 数组由于内存地址连续,是一种查询快增删慢的数据结构: 链表由于内存地址不连续,是一种查询慢增删快的数据结构: 那么怎么实现查询又快,增删也快的数据结构呢? 要是把数组和链表结合起来会怎么样? ...