面向对象(一):类,对象,构造方法

前言:面向对象就是一种编程思想,只需要关注结果,不需要关注过程,需要大家在以后的学习和开发过程中慢慢领悟。

例如:我们需要把一头大象装进冰箱,按照面向对象来理解,只需要3步即可完成:1.打开冰箱门2.将大象装进冰箱3.关闭冰箱门。至于大象是如何装进冰箱的,我们不需关注,这就是面向对象。

一(类和对象的定义):

类:我们把一类具有共同的属性,特征,行为的事物归于一类,是抽象的:---->类(类别,类型)。

对象:是具体存在的,符合类的定义的一个事物.

例如:王者荣耀里面有很多游戏主播,游戏主播就是一个类,而且是抽象的;其中,游戏主播里面的张大仙,吕德华,耀阳等等游戏主播就是具体存在的对象。

二(类和对象的创建):

2.1 类的创建格式:

访问修饰符 class 类名{

成员变量(属性);

成员方法(行为);

}

注意:1.类名首字母需大写,如有多个单词,则每个单词的首字母均大写。如,Game,MyGame。

          2.在一个java文件中,只能出现一个用public修饰class(不谈及内部类),否则会报错!!!
             而且当前public修饰的class的类名与java文件名保持一致

面向对象(一):类,对象,构造方法_第1张图片

 2.2 编写类的属性(成员变量或成员属性):

格式:数据类型 属性名;

int id;
String name;
char sex;

如果没有对成员变量赋值那么:
                                        如果成员变量是引用类型,则默认值为null
                                        如果成员变量是基本类型数,则默认值为0
                                        如果成员变量是boolean,则默认值为false

2.3 编写类的行为(成员方法或成员行为)
格式:访问修饰符  返回值类型 方法名(方法参数,有就写){

               方法体
          }

public void sayHello(int id,String name,char sex){

        System.out.println("大家好,我的id是"+id+",姓名是"+name+",性别是"+sex);

       }

2.4 通过类创建对象:

创建对象的格式:类名 对象名=new 类名();

Student stu=new Student();

通过对象调用成员变量/方法的格式:  对象名.成员变量
                                                        对象名.成员方法()

 class Student{
    int id;
    String name;
    char sex;

    public void sayHello(){
        System.out.println("大家好,我的id是"+id+",姓名是"+name+",性别是"+sex);
    }

     public static void main(String[] args) {
        //创建student对象
         Student stu=new Student();
         //给对象的成员属性赋值
         stu.id=001;
         stu.name="张三";
         stu.sex='男';
        //通过对象调用sayHello方法
         stu.sayHello();

     }
}

面向对象(一):类,对象,构造方法_第2张图片
 

2.5成员变量与局部变量

成员变量:类中定义的变量
局部变量:方法中定义的变量
位置方面:
                成员变量在类中定义
                局部变量在方法中定义
生命周期:
                成员变量(随着对象的存在而存在,随着对象的消失而消失)
                局部变量(随着方法的调用而存在,随着方法的结束而消失)
初始化方面:
                成员变量(有默认初始化值的!)

                                        如果成员变量是引用类型,则默认值为null
                                        如果成员变量是基本类型数,则默认值为0
                                        如果成员变量是boolean,则默认值为false
                局部变量(没有默认初始化值的,必须要先定义,后初始化才可以使用)

三(构造方法/构造器/构造函数):

构造方法格式:
        修饰词  类名(参数){

                方法体

        }
与普通方法的区别:
                          1.构造方法一定没有返回值(void不是没有返回值,只是返回值为null),普通方法的                               返回值根据需求来确定
                          2.构造方法名必须与类同名,而普通方法的方法名可随意取

普通方法(加static的情况下)的调用:方法名(有参传参)

何时调用构造方法:创建对象的同时就会调用

构造方法的作用:创建对象的同时,初始化成员变量(即给对象属性赋值)

通过调用有参构造方法,可以直接在创建对象的同时初始化成员变量

package day08;

public class Friend {
    //成员变量
    String name;
    int age;
    char sex;
    //构造方法

    public Friend(   String name,int age,char sex){
        System.out.println("大家好,我朋友是"+name+",今年"+age+"岁,性别是"+sex);
    }
    public static void main(String[] args) {
        //创建对象Friend的同时就会自动调用有参构造方法
            Friend fr=new Friend("耀阳",26,'男');
    }
}

无参构造器:就是没有参数的构造器
有参构造器:在创建对象时,通过参数,可以给属性指定可变得值

在创建类的实例时,若括号里面不写参数,则默认调用无参构造器

package day08;

public class Friend {
    //成员变量
    String name;
    int age;
    char sex;

    //有参构造器
    public Friend(   String name,int age,char sex){
        System.out.println("我是Friend的有参构造器");
        System.out.println("大家好,我朋友是"+name+",今年"+age+"岁,性别是"+sex);
    }
    public Friend(){
        System.out.println("我是Friend的无参构造器");
    }

    public static void main(String[] args) {
            Friend fr=new Friend();
            //Friend fr=new Friend("耀阳",26,'男');
    }
}

面向对象(一):类,对象,构造方法_第3张图片
如果括号里面写了参数,则根据实际定义的去调用

package day08;

public class Friend {
    //成员变量
    String name;
    int age;
    char sex;

    //有参构造器
    public Friend(   String name,int age,char sex){
        System.out.println("我是Friend的有参构造器");
        System.out.println("大家好,我朋友是"+name+",今年"+age+"岁,性别是"+sex);
    }
    public Friend(){
        System.out.println("我是Friend的无参构造器");
    }

    public static void main(String[] args) {
            //Friend fr=new Friend();
            Friend fr=new Friend("耀阳",26,'男');
    }
}

面向对象(一):类,对象,构造方法_第4张图片如果不手动添加构造器,编译器会默认自动添加一个无参构造器
如果手动添加了有参构造器之后,编译器就不会再给无参构造器了
建议:写个类的时候,即要写无参构造器,也要添加有参构造器

总结:1.构造器没有返回值(void不是没有返回值,只是返回值为null)
          2.构造器的名称和类名一致
          3.语法:  修饰符  类名(){代码块}
          4.在创建类的实例时被自动调用
          5.在创建类的实例时,若括号里面不写参数,则默认调用无参构造器
          6.如果括号里面写了参数,则根据实际定义的去调用
          7. 如果不手动添加构造器,编译器会默认自动添加一个无参构造器
          8. 如果手动添加了有参构造器之后,编译器就不会再给无参构造器了
              建议:写个类的时候,即要写无参构造器,也要添加有参构造器
          9. 在写构造器参数时,如果参数名字和类得属性名相同时,要在属性名前面加this. 来区分                是属性还是参数
          10. 一般建议: 在写构造器得参数名时,参数名要和属性名一样,然后通过this来标注属性                                    名

          11.在构造器中可以使用this来调用构造器,但是必须注意,调用构造器的代码必须写在构                   造器的第一行

          12. 构造器可以重载(需注意重载的条件)

你可能感兴趣的:(Java学习笔记,java,intellij-idea)