类与对象


1. 对于面向对象的开发来讲也分为三个过程:

  OOA(面向对象分析)

   OOD(面向对象设计)

   OOP(面向对象编程)

2. 面向对象的基本特征

  2.1. 封装:保护内部操作(属性,方法)不被破坏。

    1. 方法就是一种封装
    2. 关键字private(私有化)也是一种封装

        ♧使用了该关键字,本类当中仍然可以随意访问,但超出本类就不能直接访问了。

        ♧间接访问private修饰的成员变量,可以设置一组getter/setter 方法。

        ♧对于getter来说,不能有参数,返回值类型与返回值一致。

        ♧对于setter来说,不能有返回值,参数类型与返回值类型一致。

        ♧This用来区分成员变量和局部变量 

   2.2. 继承:在原本的基础上继续进行扩充。

   2.3. 多态:在一个指定范围之内进行概念转换

3. 类与对象的基本概念

  类:是一组相关属性和方法的集合,可以看成一类事物的模板。也就是说,类就是将具有共同特点的事物,抽象成为一个类。(例如:人,猫)

    • 属性(成员变量):该事物的状态信息。(例如:学生有名字,年龄,联系方式等)
    • 方法(成员方法):事物能够做什么,属于动作。(例如:学生能吃饭,睡觉,学习)      

示例代码:

1 class Student{
2 String name;
3 int age;
4
5 public void eat(){
6 System.out.println("eat food");
7 }
8 ]

   对象:一类事物的具体表现。(例如:学生,波斯猫)

示例代码:

Student s = new Student();            //其中s为具体的对象
System.out.println(s.name); //调用该该对象的属性
s.eat(); //调用该该对象的方法

  类与对象之间的关系:   

      类是抽象的,是事物的描述

      对象是具体的,是事物的实例

      类是对象的模板,对象是类的实体

4.对象调用在内存中的示意图

5.对象作为参数传递(传递的是地址) 

  当一个对象作为参数传递时,实际上传进去的是对象的地址值。

6.局部变量与成员变量的区别 

  定义位置:

    成员变量:在方法内部的变量

    局部变量:在方法外部定义的变量

  内存位置:

    局部变量:存在于栈内存中

    成员变量:存在于堆内存中

  默认值区别:

    局部变量:没有默认值

    成员变量:有默认值

  作用域不同:

    局部变量:只在小范围内使用

    成员变量:在当前类中都能使用

  生命周期不同:

    局部变量在方法被调用的时候产生,在方法调用结束时死亡

    成员变量在对象创建的时候产生,对象被回收的时候死亡。

7.构造方法

  作用:用来创建对象,并且快速赋值

   格式:

 1 class Student{
2 String name;
3 int age;
4
5 public Student(){ //无参的构造方法
6
7 }
8 public Student(String name,int age){ //全参构造方法
9 this.name = name;
10 this.age = age;
11 }
12
13 }

  特点(注意事项):   

    ♧构造方法的名称与所在的类名称完全一样

    ♧构造方法不写返回值类型,连void也不写

    ♧构造方法不能return一个具体的返回值

    ♧如果没有编写任何构造方法,那么编译器将会默认一个无参的构造方法

    ♧一旦编写了一个构造方法,那么默认的构造方法将会被覆盖

    ♧构造方法也是可以进行重载的

8.构建一个完整的类  

  通常有四部分组成:

    ♧用private修饰的成员变量

    ♧为每一个成员变量生成getter setter方法

    ♧编写一个无参的构造方法

    ♧编写一个全参的构造方法

代码示例:

 class Student1 {
private String name;
private int age; public Student1(){ }
public Student1(String name ,int age){
this.name = name;
this.age = age;
} public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void SetAge(int age){
this.age = age;
} public void eat(){
System.out.println("eat food");
}
public void sleep(){
System.out.println("sleep");
}
public void study(){
System.out.println("study!");
}
}

注:定义一个类时,不能直接写输出语句。

【类与对象】--------java基础学习第六天的更多相关文章

  1. 类、对象(java基础知识六)

    1.Java约定俗成 java约定俗成 1,类名接口名 一个单词首字母大写,多个单词每个单词首字母都大写 2,方法名和变量名 一个单词全部小写,多个单词从第二个单词首字母大写 建议:如果能用英语尽量用 ...

  2. Java类与对象的基础学习

    1. 请输入并运行以下代码,得到什么结果? public class Test{ public static void main(String args[]){ Foo obj1=new Foo(); ...

  3. Scanner,Random,匿名对象-------------------java基础学习第七天

    1.API 2.Scanner 功能:通过键盘输入数据到程序中. 引用类型的一般使用步骤: 导包 Import 包路径.类名称 只有java.lang 包写的类不需要导包,其他都需要 2.创建 类名称 ...

  4. Java基础学习心得笔记

    对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变.面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做 ...

  5. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

  6. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  7. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  8. [转帖]java基础学习总结——多态(动态绑定)

    https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态

  9. Java基础学习(2)

    Java基础学习(二) 面向对象 对象:客观存在的事物 面向对象:人具体关注的事物的某些信息 类:是模子,确定对象会拥有的特征(属性)和行为(方法) 对象的属性:对象具有的各种特征 对象的方法:对象能 ...

随机推荐

  1. 通过hook实现禁止shift+delete快捷键

    实现全局hook必须要将hook代码封装在dll里,所以此程序有两个文件:noShiftDeleteHook.dll和noShiftDelete.exe noShiftDeleteHook.dll / ...

  2. ABP core学习之一 使用Mysql数据库

    修改项目EntityFrameworkCore的相关内容 1.添加类库 使用nuget包管理器,添加Pomelo.EntityFrameworkCore.MySql 2.TradeErpDbConte ...

  3. notepad++安装nppFTP

    官网下载的最新版notepad++,结果pluginadmin里面installnppftp总是安不上,点击install之后然后点是就退出,再进去也没有安装好. 网上找了半天也没找到什么有用信息,最 ...

  4. LightOJ 1372 (枚举 + 树状数组)

    题目 Link 输出序列中有多少个组合 {a1,a2,a3,a4,a5,a6}可以构成一个六边形. 分析 序列每个数都不相等. 所以可以设 a1<a2<a3<a4<a5< ...

  5. 图文详解之ZSH美化你的终端CLI

    在这个博客中,我将介绍安装ITerm2,ZSH shell,“我的ZSH”,主题,ITerm2配色方案,“我的ZSH”插件,并启用“连线”支持,以帮助创建一个美丽而强大的终端. 如果你想让你的常规Ba ...

  6. java 冒泡排序 day003

    一.冒泡排序: 利用冒泡排序对数组进行排序 二.基本概念: 依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数, ...

  7. W3CSchool闯关笔记(Bootstrap)

    该闯关内容与JS闯关衔接. 每一题的答案均在注释处, 第一关:把所有的HTML内容放在一个包含有container-fluid的class名称的div下(注意,是所有的HTML内容,style标签属于 ...

  8. 学习笔记_J2EE_Spring(一)_入门

    3.      Spring概述 3.1.   Spring是什么 Spring是一个优秀的高可用的JavaEE轻量级开发框架.提供一站式开发解决方案. 3.2.   Spring框架出现的背景 在世 ...

  9. 论文阅读笔记五十五:DenseBox: Unifying Landmark Localization with End to End Object Detection(CVPR2015)

    论文原址:https://arxiv.org/abs/1509.04874 github:https://github.com/CaptainEven/DenseBox 摘要 本文先提出了一个问题:如 ...

  10. zabbix 修改为UTC 时区的配置

    修改php.ini中的date.timezone = UTC还确实是正解,修改后要重新启动apache,另外你应该用phpinfo()检查一下你修改php.ini和phpinfo()中指明的当前php ...