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对象的内存图的更多相关文章

  1. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  2. java基础6 面向对象的详解

    本文知识点(目录): 1.1.万物皆对象    1.2.面向对象的概述    1.3.面向对象(java语言)与面向过程(C语言)对比    1.4.面向过程    1.5.对象    1.6.面向对 ...

  3. java基础 序列化反序列化流 实现Serializable 接口 自动装载序列号到对象文本文件如修改不能反序列化对象文本,除非自定义long型常量 打印流

    package com.swift.baseKnowledge; import java.io.File; import java.io.FileInputStream; import java.io ...

  4. 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类

    ---------- android培训.java培训.期待与您交流! ---------- 一.面向对象概述 1.面向对象:是一个很抽象的概念,它相对面向过程而言,是一种程序设计的思想. 2.面向对 ...

  5. java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包

    Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...

  6. Java基础之面向对象以及其他概念

    一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JR ...

  7. 【Java基础】面向对象下

    面向对象下 这一章主要涉及其他关键字,包括 this.super.static.final.abstract.interface.package.import 等. static 在 Java 类中, ...

  8. JAVA 1.9 面向对象之封装

    1. 面向对象程序设计的三大基本特征:继承(Inheritence).封装(Encapsulation).多态(Polymorphism)2. 封装:类包含了数据与方法,将数据与方法放在一个类中就构成 ...

  9. 【java基础】面向对象的三大基本特征之-------继承

    面向对象的三大特征:封装,继承,多态 java通过extends关键字来实现继承,而且是单继承,一个子类只可以有一个直接父类,但是父类还可以有父类... java.long.Object是所有类的父类 ...

  10. Java基础:继承,封装,多态,抽象类,接口

    只要是从事Java语言有关的开发工作,在面试中难念会被问到这几个东西. 博主学习java有两年多了,算是浅显的知道一些,抄写了一些解释分享一下. 1.什么是面向对象?(面对女朋友) 面向对象(Obje ...

随机推荐

  1. git如何merge github forked repository里的代码更新?(转)

    参考内容:git如何merge github forked repository里的代码更新? [refer to ]http://www.haojii.com/2011/08/how-to-git- ...

  2. python中RabbitMQ的使用(路由键模糊匹配)

    路由键模糊匹配 使用正则表达式进行匹配.其中“#”表示所有.全部的意思:“*”只匹配到一个词. 匹配规则: 路由键:routings = [ 'happy.work',  'happy.life' , ...

  3. 【LeetCode】二分查找

    给一个升序数组,找到目标值在数组中的起始和结束位置,时间复杂度为 O(log n). e.g. 给定数组 [5, 7, 7, 8, 8, 10] 和目标值 8,返回 [3, 4].若目标值不在数组中, ...

  4. Python3组播通信编程实现教程(发送者+接收者)

    一.说明 1.1 标准组播解释 通信分为单播.多播(即组播).广播三种方式 单播指发送者发送之后,IP数据包被路由器发往目的IP指定的唯一一台设备的通信形式,比如你现在与web服务器通信就是单播形式 ...

  5. Android AES加密报错处理:javax.crypto.IllegalBlockSizeException: error:1e00007b:Cipher functions:OPENSSL_internal:WRONG_FINAL_BLOCK_LENGTH

    一.问题说明 今天写AES加/解密功能的apk,设想是四个控件(测试用的,界面丑这种东西请忽略) 一个编缉框----用于输入要加密的字符串 一个文本框----用于输出加密后的字符串,和加密后点击解密按 ...

  6. JAVA工程师面试常见问题集锦

    集锦一: 一.面试题基础总结 1. JVM结构原理.GC工作机制详解 答:具体参照:JVM结构.GC工作机制详解     ,说到GC,记住两点:1.GC是负责回收所有无任何引用对象的内存空间. 注意: ...

  7. 基于Quartz.NET 实现可中断的任务(转)

    Quartz.NET 是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET 允许开发人员根据时间间隔(或天)来调度作业.它实现了作 ...

  8. linux nginx 安装防火墙ngx_lua_waf

    ngx_lua_waf是一款开源的 基于 ngx_lua的 web应用防火墙 github地址是  https://github.com/loveshell/ngx_lua_waf 安装流程如下 1 ...

  9. U启动安装原版Win7系统教程

    1.制作u启动u盘启动盘2.下载原版win7系统镜像并存入u盘启动盘3.硬盘模式更改为ahci模式 第一步: 将准备好的u启动u盘启动盘插在电脑usb接口上,然后重启电脑,在出现开机画面时通过u盘启动 ...

  10. Java压缩文件

    压缩文件 package com.iss.cpf.windmanger.userprivilegeexport.bizlogic; import java.io.BufferedInputStream ...