黑马程序员技术交流社区
标题:
面向对象!!!
[打印本页]
作者:
THE_FUTURE
时间:
2014-9-27 09:43
标题:
面向对象!!!
1:对象内存图
创建一个对象实例的过程:
main方法执行前的准备工作:
将类加载到内存当中
静态区的成员(方法,属性)
1、定义一个变量来接收一个对象实例
2、通过new关键字在堆内存中开辟空间
3、将成员变量默认初始化
4、如果有静态代码块,先静态代码块。如果有构造代码块,先执行构造代码块。构造方法将成员变量进行显式初始化
5、变量指向对象实例的内存地址
1:成员变量和局部变量的区别(理解)
(1)定义位置区别:
成员变量:定义在类中,方法外。
局部变量:定义在方法中,或者方法声明上。
(2)初始化值的区别:
成员变量:都有默认初始化值。
局部变量:没有默认初始化值。要想使用,必须先赋值。
(3)存储位置区别:
成员变量:存储在堆中。
局部变量:存储在栈中。
(4)生命周期区别:
成员变量:随着对象的创建而存在。随着对象的消失而消失。
局部变量:随着方法的调用而存在,随着方法调用完毕而消失。更严谨地说当局部变量的作用域结束时,即被销毁。
就近原则:局部变量有,就用局部变量,局部变量没有,就找成员变量。如果成员变量也没有就报错
2:封装(理解)
(1)隐藏实现的细节,提供公共的访问方式。
类,方法等其实都是封装的具体体现。
(2)private关键字
A:用于修饰成员变量和成员方法。
B:被修饰的内容在其他类中是不可以被访问的。
(3)常见的应用:(掌握)
类中的所有成员变量私有,给出对应的get/set方法。
代码体现:
class Student
{
private String name;
private int age;
public Student(){}
public Student(String name,int age)
{
this.name = name;
this.age = age;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
}
3:构造方法(掌握)
用来创建实例对象
创建同时可以给属性赋值
(1)格式及特点
格式:
访问权限修饰符 类名(参数...){}
访问权限修饰符:
public,private
特点:
A:方法名和类名相同
B:没有返回值类型
C:没有具体的返回值
(2)注意事项:
A:如果你不给构造方法,jvm会自动给你一个无参构造方法。
B:如果你给出了构造方法,那么,jvm将不再提供无参构造方法。
这个时候,你如果要使用无参构造方法:只能自己提供
推荐:永远手动给出无参构造方法。
4:this关键字(掌握)
(1)是一个关键字。代表当前对象的引用。
//简单记:在方法中,哪个对象调用方法,this就代表谁。
(2)应用场景:
解决局部变量隐藏成员变量问题。
在构造方法中调用其他的构造方法(必须写在第一行)
/暂留
5:static关键字(理解)
(1)是一个关键字。可以修饰成员变量和成员方法。
(2)静态的特点:
A:随着类的加载而加载
B:优先于对象存在
C:被类的所有对象共享
D:可以通过类名调用
(3)静态的注意事项:
A:在静态方法中是没有this关键字的。
B:静态方法只能访问静态的成员变量和静态的成员方法。
(4)静态内容的调用:
A:被对象调用
B:被类名调用
推荐被类名调用。
(5)什么时候该用static呢?
如果某个内容是所有对象共享的,就用静态修饰。
举例:
水杯和饮水机。
厕所和人。
老师和学生。
对于传智学生都是热爱编程。
6:Math类的随机数(掌握)
类名调用静态方法。
包:java.lang
类:Math
方法:public static double random():
java.lang包下的类是不用导包就可以直接使用的。
产生1-100之间的随机数:
int number = (int)(Math.random()*100)+1;
作者:
张周飞
时间:
2014-9-27 10:23
终结的不错!!不过还有很多地方落下了
作者:
THE_FUTURE
时间:
2014-9-27 11:10
张周飞 发表于 2014-9-27 10:23
终结的不错!!不过还有很多地方落下了
有字数限制,只能拿一些大体上的发上来!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2