1.面向对象的思想:
1).基于"面向过程的";
2).当所要处理的数据量越来越大时,原来C语言明显支持的不够。
3).所以才出现了面向对象的编程语言;
2.面向对象的开发流程:
1).面向对象的分析;抽取出需要记录的"类"。一般是名词;
2).面向对象的设计:进一步完善每个类中属性和行为,以及类和类之间的关系;
3).面向对象的编程:写代码;
3.怎样面向对象编程:
1).定义类;class 类名{
}
2).类中只能是一些定义语句:例如:定义成员属性和成员方法;
class 类名{
//1.成员属性:[访问修饰符] 数据类型 变量名
private String stuName;
//2.成员方法:[访问修饰符] 返回值类型 方法名(形参列表)
void show(){
}
//不允许有其它打印、循环、判断等一些语句;
// System.out.println(stuName);
}
3).类中的"成员方法"可以访问自己的"成员属性":
class Student{
String stuName;
void show(){
System.out.println("大家好,我叫:" + stuName);
}
}
main(){
Student stu = new Student();
stu.stuName = "张三";
stu.show();//大家好,我叫:张三
}
4.类的实例化:
1).格式:类名 变量名 = new 类名();
new关键字,将会在内存中产生一个此类的对象;
2).当在内存中产生类对象后:
A.对于成员变量会自动初始化:
整数:0
浮点:0.0
...
B.成员方法,会在"方法区"开辟空间,存储方法的字节码。
3).对于非静态的成员属性和成员方法,必须要先实例化此类对象,之后才能调用。
5.成员变量和局部变量的区别:
1).在类中的位置不同:
成员变量:在类体中;
局部变量:在方法或某个其它代码块中;
2).在内存中的位置不同:
成员变量:堆空间
局部变量:栈空间
3).生命周期不同:
成员变量:一旦所在作用域消失后,堆空间不会立即清除,会成为垃圾,后期由垃圾回收器不定期回收;
局部变量:当所在作用域消失后,栈空间会立即清除;
4).初始化值不同:
成员变量:自动分配初始化值;
局部变量:必须手动显示的赋初始值,才能访问。
6.方法的形参是"类名"的时候:
1).方法的形参可以是基本数据类型也可以是引用数据类型;
2).如果方法的形参是一个类名时:
意味着它接收的是此类对象的引用
3).调用时,一定要传递一个"引用"过去。
7.匿名对象:
1).没有名字的对象;new 类名();
2).因为匿名对象没有名字,所以只能使用一次;
3).一般在如果只需要使用此对象一次时,可以使用匿名对象的方式;
class MyMath{
double getPI(){
return 3.14159;
}
}
class Demo{
main(){
// MyMath m = new MyMath();
// double pi = m.getPI();
//使用匿名对象
double pi = new MyMath().getPI();
}
}
8.封装:
1).当我们的类的属性直接对外暴露时,是十分不安全的:
2).此时我们可以将"成员属性"进行"私有化";
一个类中的"成员属性"或"成员方法"被私有化后,意味着它们只能在此类的内部被访问。其它类是无法访问到的。
3).之后要提供get或set方法读取属性值或属性设置属性值;
4).另外,也可以将一些"成员方法"进行私有化,意味着外部不能访问私有化的方法:
例如:class 汽车厂{
private void 生产方向盘(){
}
private void 生产车架(){
}
private void 生产底盘(){
}
private void 生产发动机(){
}
...
汽车 组装整车(){
生产方向盘();
生产车架();
生产底盘();
生产发动机();
...
return 汽车;
}
}
9.private关键字:
1).是一种"访问修饰符"。
2).在Java中访问修饰符一共有4个:private,(默认),protected,public
3).这种访问修饰符可以修饰"成员属性"和"成员方法";
4).被private修饰后的成员属性或成员方法意味着只能在此类的内部被访问,在
其它类中无法访问; |
|