Java基础(2)面向对象和封装,对象的创建和使用、java对象的内存图
1 类和对象
类:是一类事物的描述,抽象的。猫
对象:是一类事物的实例,具体的。某只猫
2 类的定义
成员变量和成员方法
//定义一个学生类
public class Student {
//成员变量
String name;
int age; //成员方法,不要写static关键字
public void eat(){
System.out.println("吃饭");
}
public void study(){
System.out.println("学习");
}
}
3 对象的创建和使用
//创建DemoStudent 对象
public class DemoStudent {
public static void main(String[] args) {
Student student1 = new Student();
System.out.println(student1.name);
System.out.println(student1.age);
System.out.println("======");
student1.name = "Wang";
student1.age = 18;
System.out.println(student1.name);
System.out.println(student1.age);
student1.eat();
student1.study();
}
}
//
null
0
======
Wang
18
吃饭
学习
4 对象的内存图
01 一个对象的内存图

方法区存放:成员变量,方法,
main方法先调用,然后
call方法压栈,call方法调用结束后出栈;
send方法压栈,send方法调用结束后出栈;
main方法出栈,程序结束
02 两个对象的内存图

03 两个引用指向同一个对象
public class DemoStudent1 {
public static void main(String[] args) {
Student stu1 = new Student();
stu1.age = 19;
System.out.println(stu1.age);
Student stu2 = stu1;//赋值操作,两个对象指向同一个地址
System.out.println(stu2.age);
stu2.age = 20;//改变其中一个的值,另一个也会修改
System.out.println(stu1.age);
}
}
//
19
19
20
04 对象作为方法的参数

05 对象作为方法的返回值(略)
06 面向对象三大特性之封装性
方法就是一种封装:方法内部怎么实现的并不关心,只需要返回值对了就行。
m关键字private也是一种封装
public class Person {
String name;
private int age;
private boolean male;
public void show(){
System.out.println("my name is:"+ name + ",my age is:"+ age + "性别是:" + isMale());
}
public void setName(String str){
name = str;
}
public void setAge(int num){
if(num<100 && num>0){
age = num;
}else{
System.out.println("invalid input");
}
}
public int getAge(){//age是private的,只能通过setter和getter方法进行间接访问
return age;
}
public void setMale(boolean m){
male = m;
}
public boolean isMale(){//boolean类型的数据的getter方法比较特殊,用is表示
return male;
}
}
public class Demo03Person {
public static void main(String[] args) {
Person person = new Person();
person.show();
person.name = "张无忌";
person.setAge(90);
person.setMale(true);
person.show();
}
}
////
my name is:null,my age is:0性别是:false
my name is:张无忌,my age is:90性别是:true
Java基础(2)面向对象和封装,对象的创建和使用、java对象的内存图的更多相关文章
- Java基础-初识面向对象编程(Object-Oriented-Programming)
Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...
- java基础6 面向对象的详解
本文知识点(目录): 1.1.万物皆对象 1.2.面向对象的概述 1.3.面向对象(java语言)与面向过程(C语言)对比 1.4.面向过程 1.5.对象 1.6.面向对 ...
- java基础 序列化反序列化流 实现Serializable 接口 自动装载序列号到对象文本文件如修改不能反序列化对象文本,除非自定义long型常量 打印流
package com.swift.baseKnowledge; import java.io.File; import java.io.FileInputStream; import java.io ...
- 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类
---------- android培训.java培训.期待与您交流! ---------- 一.面向对象概述 1.面向对象:是一个很抽象的概念,它相对面向过程而言,是一种程序设计的思想. 2.面向对 ...
- java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包
Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...
- Java基础之面向对象以及其他概念
一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JR ...
- 【Java基础】面向对象下
面向对象下 这一章主要涉及其他关键字,包括 this.super.static.final.abstract.interface.package.import 等. static 在 Java 类中, ...
- JAVA 1.9 面向对象之封装
1. 面向对象程序设计的三大基本特征:继承(Inheritence).封装(Encapsulation).多态(Polymorphism)2. 封装:类包含了数据与方法,将数据与方法放在一个类中就构成 ...
- 【java基础】面向对象的三大基本特征之-------继承
面向对象的三大特征:封装,继承,多态 java通过extends关键字来实现继承,而且是单继承,一个子类只可以有一个直接父类,但是父类还可以有父类... java.long.Object是所有类的父类 ...
- Java基础:继承,封装,多态,抽象类,接口
只要是从事Java语言有关的开发工作,在面试中难念会被问到这几个东西. 博主学习java有两年多了,算是浅显的知道一些,抄写了一些解释分享一下. 1.什么是面向对象?(面对女朋友) 面向对象(Obje ...
随机推荐
- SPA单页面应用
什么是单页应用 单页Web应用,就是只有一张Web页面的应用.浏览器一开始会加载必需的HTML.CSS和JavaScript,之后所有的操作都在这张页面完成,这一切都由JavaScript来控制.因此 ...
- Win10系列:JavaScript获取文件和文件夹列表
在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolder ...
- Vue + Element UI 实现权限管理系统(搭建开发环境)
技术基础 开发之前,请先熟悉下面的4个文档 vue.js2.0中文, 优秀的JS框架 vue-router, vue.js 配套路由 vuex,vue.js 应用状态管理库 Element,饿了么提供 ...
- Android 音视频深入 四 录视频MP4(附源码下载)
本篇项目地址,名字是<录音视频(有的播放器不能放,而且没有时长显示)>,求star https://github.com/979451341/Audio-and-video-learnin ...
- Unity3D中的射线与碰撞检测代码
两种不同写法的射线检测 1.获取鼠标点击的物体 if (Input.GetMouseButtonDown(0)) { Ray ray = MainCamera.ScreenPointToRay(Inp ...
- 查看json数据更新情况
#! python3 # -*- coding:utf8 -*- #主要为读取excel中接口地址,打开网页爬取url页面中数据,解析json,检查是否符合逻辑(正常) import requests ...
- Bootstrap--思维导图
Bootstrap--思维导图
- Centos7下mysql5.7.22主从配置
一:服务器配置 1.1修改root密码: ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxx'; 1.2添加远程登陆用户: GRANT ALL PRIV ...
- MyEclipse使用教程:在Web项目中使用Web片段
MyEclipse 在线订购年终抄底促销!火爆开抢>> MyEclipse最新版下载 本教程向用户展示了使用关联的Web项目创建Web片段项目的机制.用户还可以获得要检查的示例项目.在本教 ...
- Java流对象理解
马士兵老师,曾在Java的学习过程中,将Java的流比作管道,认为很贴切,在此笔者也建议读者在学习过程中作类似比喻,形象化的学习 Java根据数据流向的不同分为输入流和输出流: Java根据处理数据类 ...