面向过程(步骤化):当需要实现一个功能的时候,每一个具体的步骤都要自己干,详细处理每一个细节。
面向对象(行为化):当需要实现一个功能的时候,不关心具体步骤,而是找一个已经具有该功能的人来做事。
洗衣服:
面向过程:脱衣服-->仍盆里-->加水和洗衣粉-->手洗-->拧干-->晒干
面向对象:脱衣服-->打开洗衣机-->放入衣服-->点击按钮-->烘干
复杂的事情简单化,包含三大基本特征,即封装、继承和多态。
public class Demo{
public static void main(String[] args){
int[] array = {1,2,3,4,5};
//输出【1,2,3,4,5】
//面向过程
System.out.println("【");
for(int i = 0,leni = array.length;i
是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特性和行为特征来描述该类事物。
属性:该事物的状态信息。
行为:该事物能干啥。
举例:人
属性:名字、年龄、身高、体重
行为:吃、喝、拉、撒、睡
是一类事物的具体表现。对象是类的一个实例,必然具备该类事物的属性和行为。
举例:一个人
行为:吃、喝、拉、撒、睡
类是对一类事物的描述,是抽象的。
对象是一类事物的实例,是具体的。
类是对象的魔板,对象是类的实体。
格式:
public class ClassName{
//成员变量
String tempStr;
//成员方法
public void MethodName(){
}
}
定义类:就是定义类的成员,包括成员变量和成员方法。
成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。
成员方法:如上所示。
创建格式:
类名称 对象名 = new 类名称();
使用:
使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名(有参数也可传入参数)
代码举例:
public class Person{
String name;
int age;
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
}
public class Person{
public static void main(){
//创建对象
Person person = new Person();
//输出
System.out.println(person.name);//输出null
System.out.println(person.eat());
//对成员变量进行赋值
person.name = "刘德华";
System.out.println(person.name);//输出刘德华
}
}
定义位置
局部变量:方法内部
成员变量:方法外部,直接写在类当中
作用范围
局部变量:只有方法当中可以使用
成员变量:整个类全都可以通用
默认值
局部变量:没有默认值,如果想要使用,必须手动进行赋值
成员变量:如果没有赋值,会有默认值
内存的位置
局部变量:位于栈内存
成员变量:位于堆内存
生命周期
局部变量:随着方法进栈而产生,随着方法出栈消失。
成员变量:随着对象创建而产生,随着对象被回收而消失。
代码示例:
public class DemoArray {
//成员变量
String name;
public void methodA(){
//局部变量
int num = 1;
System.out.println(num);
System.out.println(name);//输出null
}
public void methodB(){
//局部变量
int num;
//未赋值,不可使用
//System.out.println(num);
}
//方法的参数就是局部变量
public void methodC(int param){
//参数在方法调用时,必然会赋值。
System.out.println(param);
}
}
就是将一些细节信息隐藏起来,对外界不可见。
体现:
1、方法就是一种封装
2、关键字private(私有化)也是一种封装,提高代码安全性。
3、使用了private修饰符,本类可以访问,超出本类范围之外不能直接访问,间接访问使用Getter/Setter方法,命名规则必须为setXxx/getXxx,对于Getter来说,不能有参数,返回值类型和成员变量对应,对于Setter来说,不能有返回值,参数类型和成员变量对应。
4、this关键字,谁调用的方法,谁就是this,重名区分。
代码举例:
public class DemoArray {
public static void main(String[] args){
//定义数组
int [] array = {22,33,551,5,1,8888};
//数组排序
array = sortArray(array);
//数组输出
console(array);
Person person = new Person();
person.setAge = 18;
System.out.println(person.getAge);
}
//对数组进行排序
public static int [] sortArray(int [] array){
for(int i = 0,leni = array.length;i array[j]){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
return array;
}
//输出结果
public static void console(int [] array){
for(int i = 0,leni = array.length;i
public class Person {
private int age;
private boolean male;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setMale(boolean male){
this.male = male;
}
//boolean值Getter方法一定要写成isXxx形式,Setter方法规则不变。
public boolean isMale(){
return male;
}
}
格式:
public 类名称(参数类型 参数名称){
方法体
}
代码举例:
public class Person {
public Person(){
System.out.println("干啥呢?老铁");
}
}
注意事项:
1、必须和所在类名完全一致。
2、不要写返回值类型。
3、构造方法不能return具体返回值。
4、如果没有编写任何构造方法,那么编译器将会默认一个无参构造方法。
5、一旦编写至少一个(方法重载)构造方法,那么编译器将不再赠送无参构造方法。
1、所有成员变量都要使用private关键字。
2、为每一个成员变量写一堆Getter/Setter方法。
3、一个无参构造方法。
4、一个全参构造方法。
代码举例:
public class Person {
private String name;
private int age;
public Person{
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
}