面向对象的特征:

封装,继承,多态

类:一组相关属性(数据成员)和行为(成员方法)的集合。抽象出事物的属性和行为来描述事物。

对象:一类事物的具体体现。

类和对象的关系:

类的定义:

例:定义一个学生类:

public class Student{//成员变量 String name;//姓名int age;//年龄//成员方法public void eat(){System.out.println("吃饭");}public void sleep(){System.out.println("睡觉");}public void study(){System.out.println("学习");  }}

注意事项:
1、成员变量是直接定义在类当中的,在方法外边

2、成员方法不要写static关键字

3、通常情况下,一个类不能直接使用,需要根据类创建一个对象,才能使用

创建对象:

1、导包:

指出需要使用的类,在什么位置

import 包名称.类名称

对于和当前类属于同一个包的情况,可以省略语句不写

2、创建:

类名称 对象名=new 类名称();

Student stu =new Student ( ) ;

3、使用:

使用成员变量:对象名.成员变量名

使用成员方法: 对象名.成员方法名(参数)

  public static void main(String[] args) {Student stu=new Student();stu.eat();}

成员变量不赋值使用默认值,规则和数组一样

改变成员变量的值:

  public static void main(String[] args) {Student stu=new Student();stu.age=101;stu.name="lfa";System.out.println(stu.age);System.out.println(stu.name);}

一个对象的内存图:

解释:堆中的方法存放点 的是方法在方法区的地址

两个对象使用同一个方法的内存图:

解释:同一个不同的对象在堆中地址不同,但是成员方法的地址相同

两个引用指向同一个对象的内存图

two是one的引用,两个在堆中的地址相同

对象作为方法的参数:

内存图:

类作为方法的返回值:

内存图:

成员变量和局部变量的区别:

1、定义的位置:【重点】

局部变量:方法的内部

成员变量:方法的外部,直接写在类当中

2、作用范围不一样【重点】

局部变量:只有方法中才可以使用,出了方法就不能再用

成员变量:整个类全都可以通用

3、默认值不一样【重点】

局部变量: 没有默认值,如果想要使用,必须手动赋值

成员变量: 如果没有赋值,会有默认值,规则和数组一样

4、内存的位置不一样(了解)

局部变量:位于栈内存

成员变量:位于堆内存

5、声明周期不一样(了解)
局部变量:随着方法进栈而诞生,随着方法出栈而消失

成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失

封装性:

封装性在java中的体现

1、方法就是一种封装

2、关键字private也是一种封装

封装就是把细节信息隐藏起来,对于外界不可见

private的使用

public class person{private  String name;public  void show(){System.out.print(name);}public void setname(String na){name=na;}public String GetName(){return name;}
}

在定义成员变量前加上private修饰,将该成员保护起来

本类中可以随意访问,但是超出本类范围之外就不能直接访问了

但可以通过成员方法间接访问,如用方法setX初始化X,getX获得X

注意对于获取boolean类型的成员变量,要写成isXxx的形式

this关键字:

当方法的局部变量和类的成员变量重名时,根据就近原则,优先使用局部变量

如果需要访问本类当中的成员变量,需要使用格式:

this.成员变量名

通过谁调用的方法,谁就是this

构造方法:

转门用来创建对象的方法,当通过关键字new来创建对象时,其实就是在调用构造方法。

格式:public 类名称(参数类型 参数名称)

{方法体}

注意事项:
1、构造方法的名称必须和所在类名称完全一样,就连大小写也要一样

2、构造方法不要写返回值类型,连void都不写

3、构造方法不能有返回值

4、如果没有编写任何构造方法,编译器会有一个默认的构造方法,没有参数和方法体

6、一旦编写了至少一个构造方法,编译器将不会再用默认的构造方法

7、构造方法可以进行重载

public class Student{private int age;public Student(int age){this.age=age;}public Student(){System.out.println("执行无参构造方法");
}}
public static void main(String[] args){ Student stu1=new Student();//调用无参构造函数Student stu2=new Student(10);//调用有参构造函数
}

new 后加的其实就是对象的构造方法

一般使用构造方法对成员变量初始化,但是修改时还是需要用setXxx方法

定义一个标准的类:

1、所以的成员变量都要使用private关键字修饰

2、为每一个成员变量编写一对Getter/Setter方法

3、编写一个无参数的构造方法

4、编写一个全参数的构造方法

快捷键:Fn+Alt+Insert(笔记本右上角)

public class Student {private String name;private int age;public Student() {}public Student(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;}
}

对象数组:

定义一个标准person类(String name;   int  age;)

定义一个数组,储存person对象:

person[] array=new person[3];

person one=new person("a",1);

person two=new person("b",2);

person three=new person("c",3);

array[0]=one;

array[1]=two;

array[2]=three;

一旦创建,数组长度不可改变

【java笔记】类与对象(定义,创建,使用,标准的类,对象数组)相关推荐

  1. Java笔记:包装类、toString()方法、单例类、比较(==和equals方法)

    1.包装类 1)包装类为基本数据类型提供了相应的引用数据类型. (基本数据类型-包装类) btye-Byte,char-Character,short-Short,float-Float int-In ...

  2. 面向过程和面向对象的设计思想、java类、Java类的定义、java对象、对象的创建和使用、类和对象、变量分类、方法分类、构造方法、方法的重载

    1.面向过程和面向对象的设计思想 面向过程:procedure oriented programming 缩写 POP. 分析出解决问题所需要的步骤,然后把步骤一步一步实现. 面向过程直接关注流程. ...

  3. Java(实验三)类与对象-定义并实现一个长方体类(Cube),包含长(length)、宽(width)与高(height)等三个属性

    一.实验目的: 1.学会定义并实现类. 2.学会定义并创建类的对象,通过类的对象访问类的成员属性与方法. 3.学会定义并实现派生类,学会使用派生类的对象. 4.理解并学会使用类的多态性. 二.实验环境 ...

  4. java笔记(基础+修饰符+选择结构+分支结构+循环结构+方法+数组+面对对象+三大特性)

    文章目录 语言基础 变量 概念 全局变量 局部变量 实例变量 声明 数据类型 常用 基本数据类型 引用数据类型 Unicode编码表 ASCII字符表 运算符 算术运算符 赋值运算符 关系运算符 逻辑 ...

  5. Java笔记:与系统交互、系统相关的类,Object类

    1.程序与用户交互 (1)运行一个Java程序的时候要给它提供一个main方法入口,这边分析一下这个main方法的签名 public static void main(String[] args); ...

  6. 【java笔记】接口的定义,接口的使用

    java不支持多继承性,即一个类只能有一个父类.(单继承性) 为了解决单继承的缺点,java使用了接口 接口是一种引用数据类型,最重要的内容是抽象方法 (public) interface 接口名称{ ...

  7. java定义类模板_定义模板——函数模板和类模板

    面向对象编程(OOP)和泛型编程都能处理在编写程序时不知道类型的情况.不同之处在于:OOP能处理类型在程序运行之前都未知的情况:而在泛型编程中,在编译时就能获知类型了. 前面介绍的容器.迭代器和算法都 ...

  8. php 对象教程,创建一个简单的PHP对象_PHP教程

    name = "亚古兽"; $agu -> hitPoint = 50; $agu -> attack = "12"; $agu -> def ...

  9. android 对象的创建,android – 如何使用嵌套对象创建一个类Parcelable

    我想让A级Parcelable. public class A { public String str; public ArrayList list; } 这是我到目前为止所提出的.但是它崩溃了Nul ...

  10. 2020.10.25 对象的创建 利用构造函数创建对象 遍历对象属性 遍历函数属性和属性数值for in 内置对象

    输出遵循变量的值就近原则 对象创建方法 : 第一种 var obj = { uname:'dengzhu',//属性的创建,多个属性创建之间用逗号隔开 sex: male; sayHi: functi ...

最新文章

  1. 1个Python特征选择工具,助力实现高效机器学习
  2. 成功解决AttributeError: module ‘tornado.web‘ has no attribute ‘asynchronous‘
  3. Django运行项目时候出现DisallowedHost at / Invalid HTTP_HOST header:
  4. Java多线程学习四十:如何写一个必然死锁的例子
  5. mysql 聚集函数 count 使用详解
  6. 圣经 创世纪 1:20-22
  7. 基于STM32的步进电机驱动设计
  8. 安卓10终于来了,能吃上的果然只有这些手机!
  9. 3.2计算机网络(停止-等待协议 后退N帧协议 选择重传协议)
  10. Setup Factory打包注册dll
  11. 阿里云上传图片返回403其中一种解决办法
  12. Quartz2D学习记录
  13. 程序猿日后规划_保存网页以供日后阅读的最佳方法
  14. 用计算机弹起风了歌词,起风了歌词(买辣椒也用券演唱)
  15. pytorch 猫狗二分类 resnet
  16. Halcon17完美破解兼容17.12.0.0附破解说明
  17. 保姆级人工智能学习成长路径
  18. 解决桌面图标有蓝色阴影的问题
  19. 跟我学AngularJs:AngulaJs开发技巧汇总(持续更新)
  20. 如何生成一个安卓和苹果手机都能识别的二维码

热门文章

  1. UVA11384 Help is needed for Dexter【数学】
  2. UVA465 Overflow【大数】
  3. 二进制128位整数运算
  4. n 中选 m —— 随机采样的艺术
  5. numpy 辨异(四)—— np.repeat 与 np.tile
  6. C++ Tricks(一)—— 判断字符串 string 对象的所有字符都相等
  7. 用几何(解析几何)方法求解概率问题
  8. 【脑经急转弯】—— 灯亮还是灭?
  9. python画3d图-Python 竟能绘制如此酷炫的三维图
  10. python编程实例-python编程实战