JavaSE笔记之面向对象

1、面向对象思想

1.1 思想概述

概述

面向过程(步骤化):当需要实现一个功能的时候,每一个具体的步骤都要自己干,详细处理每一个细节。

面向对象(行为化):当需要实现一个功能的时候,不关心具体步骤,而是找一个已经具有该功能的人来做事。

举例

洗衣服:

面向过程:脱衣服-->仍盆里-->加水和洗衣粉-->手洗-->拧干-->晒干

面向对象:脱衣服-->打开洗衣机-->放入衣服-->点击按钮-->烘干

特点

复杂的事情简单化,包含三大基本特征,即封装、继承和多态。

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

1.2 类和对象

什么是类

是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特性和行为特征来描述该类事物。

属性:该事物的状态信息。

行为:该事物能干啥。

举例:人

属性:名字、年龄、身高、体重

行为:吃、喝、拉、撒、睡

什么是对象

是一类事物的具体表现。对象是类的一个实例,必然具备该类事物的属性和行为。

举例:一个人

行为:吃、喝、拉、撒、睡

类与对象的关系

类是对一类事物的描述,是抽象的。

对象是一类事物的实例,是具体的。

类是对象的魔板,对象是类的实体。

 

1.3 类的定义

格式:

public class ClassName{
    //成员变量
    String tempStr;

    //成员方法
    public void MethodName(){
        
    }
}

 定义类:就是定义类的成员,包括成员变量成员方法

成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。

成员方法:如上所示。

 

1.4 对象的使用

创建格式:

类名称 对象名 = 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);//输出刘德华
    }
}

 

1.5 对象内存图

JavaSE笔记之面向对象_第1张图片

 

1.6 成员变量与局部变量区别

定义位置

局部变量:方法内部

成员变量:方法外部,直接写在类当中

作用范围

局部变量:只有方法当中可以使用

成员变量:整个类全都可以通用

默认值

局部变量:没有默认值,如果想要使用,必须手动进行赋值

成员变量:如果没有赋值,会有默认值

内存的位置

局部变量:位于栈内存

成员变量:位于堆内存

生命周期

局部变量:随着方法进栈而产生,随着方法出栈消失。

成员变量:随着对象创建而产生,随着对象被回收而消失。

代码示例:

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.7三大特征之封装

就是将一些细节信息隐藏起来,对外界不可见。

体现:

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;
    }
}

1.8构造方法

格式:

public 类名称(参数类型 参数名称){

方法体

}

代码举例:

 public class Person {
    public Person(){
        System.out.println("干啥呢?老铁");
    }
}

注意事项:

1、必须和所在类名完全一致。

2、不要写返回值类型。

3、构造方法不能return具体返回值。

4、如果没有编写任何构造方法,那么编译器将会默认一个无参构造方法。

5、一旦编写至少一个(方法重载)构造方法,那么编译器将不再赠送无参构造方法。

 

1.9什么是标准类

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;
    }
}

 

 

 

 

你可能感兴趣的:(JavaSE)