面向对象
1:类与对象
#类是抽象的,对象是具体的;
#类就相当于模板,依照此模板生产产品;
#类定义:
class {
。。。。。
}
类命名:首字母大写
一个类定义之后不能直接使用,要产生对象。
#对象的创建
类名 对象名=null//声明对象
对象名 = new 类名();//实例化对象
类名 对象名 = new 类名();
class Person{
String name;
int age;
public void tell(){
System.out.println("姓名:"+name+"年龄:"+age);
}
对象的创建:
class Person{
String name;
int age;
public void tell(){
System.out.println("姓名:"+name+"年龄:"+age);
}
public class test06
{
public static void main(String args[]){
Person per = new Person();
}
}
}
面向对象的三个基本特征:
#封装
#继承
#多态
2:类与对象的进一步研究
类属于引用传递类型
Person per = new Person();//创建并实例化对象
#声明对象:Person per ,栈内存中声明的,与数组一样,数组名称就保存在栈内存中,只开辟了栈内存的对象是无法使用的,必须有其堆内存的引用才可以使用。
#实例化对象:new Person(),在堆中开辟空间,所有的内容都是默认值。
String :是一个字符串,本身是一个类,就是一个引用数据类型,
则此时默认值是null。
了解分配关系,就可以为属性赋值,并调用类中方法;
调用属性:对象.属性
调用方法:对象.方法
class Person{
String name;
int age;
public void tell(){
System.out.println("姓名:"+name+"年龄:"+age);
}
}
public class test06
{
public static void main(String args[]){
Person per = new Person();
//Person per = null;
//per = new Person();
per.name="张三";
per.age = 30;
per.tell();
}
}
#内存分配:
对象是保存在栈内存中
属性是保存在堆内存中的
在程序中的所有的方法是保存在全局代码区之中的,此区中的内容是所有对象共享的。
注意:
在引用操作中,如果一个对象没有堆内存的引用,而调用了类中的属性或方法,就会出现问题。
多个对象:
class Person{
String name;
int age;
public void tell(){
System.out.println("姓名:"+name+" 年龄:"+age);
}
}
public class test06
{
public static void main(String args[]){
Person per1 = null;
Person per2 = null;
per1 = new Person();
per2 = new Person();
//Person per = null;
//per = new Person();
per1.name="张三";
per1.age = 30;
per2.name="李四";
per2.age = 33;
per2 = per1;//把per1的堆内存空间使用权给per2
per1.tell();
per2.tell();
}
}
因为per2改变了指向,所以其原本的内存空间就没有任何栈的引用,则这样的内存就被称为垃圾,等待垃圾回收机制进行回收,
GC:垃圾收集机制的简称。