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 一个对象的内存图

Java基础(2)面向对象和封装,对象的创建和使用、java对象的内存图

方法区存放:成员变量,方法,

main方法先调用,然后

call方法压栈,call方法调用结束后出栈;

send方法压栈,send方法调用结束后出栈;

main方法出栈,程序结束

02 两个对象的内存图

Java基础(2)面向对象和封装,对象的创建和使用、java对象的内存图

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 对象作为方法的参数

Java基础(2)面向对象和封装,对象的创建和使用、java对象的内存图

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

上一篇:编程入门:C语言基础知识全网超全不用到处找了!


下一篇:悉尼科技大学新建量子软件和信息中心 专注五大研究领域