Java面向对象

一.类和对象    

1. 类:

     类是对现实生活中一类具有共同属性和行为的事物的抽象

     类是对象的数据类型,类是具有相同属性和行为的一组对象的集合

     简单理解:类就是对现实事物的一种描述

  2.类的组成

     属性:指事物的特征,例如:手机事物(品牌,价格,尺寸)

     行为:指事物能执行的操作,例如:手机事物(打电话,发短信)

3.类和对象的关系

          类:类是对现实生活中一类具有共同属性和行为的事物的抽象(类似某种物体的设计图)

           对象:是能够看得到摸的着的真实存在的实体(根据类创立出的具体事务)

          简单理解:类是对事物的一种描述,对象则为具体存在的事物,他表示一类对象的共有特性

4.类补充定义:

        

   1.     public class 类名{

                        1.成员变量(一般不赋值)

                        2.成员方法

                        3构造器(后面在学)

                        4.代码块(后面在学)

                        5.内部块(后面在学)

}

2.用来表示一类事物的类,专业名词叫做Javabean类

        Javabean类里面不写main方法

        带main方法的叫测试类

        我们可以在测试类中建立javabean的对象,并赋值使用

5.定义类建议:

       (1) 类名首字母建议大写

        (2)一个Java文件中可以有多个class,但是只有一个class用public修饰

                      没什么用,建议一个文件里只有一个类

6.成员变量建立建议形式:修饰符(后面学) 数据类型 变量名字 = 赋值;

二.对于开发中类设计

        成员:提取名词(例如注册系统里用户名,密码,验证码..)

        方法:提取动词组(例如注册系统里修改,删除,创建,登录....)

三对象的创立

   1. 创建对象

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

        范例:Phone p = new Phone();

                   Scanner sc = new Scanner();

    使用对象(类似结构体?)

        1:使用成员变量

            格式:对象名.变量名

            范例:p.brand = ....

        2:使用成员方法

            格式:对象名.方法名()

            范例:p.call();

 */

public class Phone {
    //成员变量
    String brand;
    int price;

    //成员方法
    public void call() {
        System.out.println("打电话");
    }

    public void sendMessage() {
        System.out.println("发短信");
    }
}


public class duixiang {
    public static void main(String[] args) {
            Phone p = new Phone();
        p.price = 1988;
        p.brand = "小米";
        System.out.println(p.brand);
        System.out.println(p.price);
        p.call();
        p.sendMessage();
    }

  四      面向对象的封装

        封装:是面向对象三大特征之一(封装,继承,多态),它告诉我们如何正确设计对象的属性和特征。

        例如:对于人关门这个动作,有两个对象(人和门),而关门这个方法(public void close();)要写在门类里面,而不是人里面,可以理解为人给力,然后门自己关上了(我认为还是比较好理解的)。

好处:Java发布的时候已经写好了很多现成的类了,你只需要建立对象然后调用就行了。

        例如:Scanner sc = new Scanner();

                       int score = sc.nextInt();

      就有了Scanner这个类了,Scanner里面有nextInt()这个方法,你只需要直接调用就行了,不用管nextInt()怎么运行的,这也是Java比c好的地方,c是面向过程,Java是面向对象。

Java有一个JDK API文档,里面就是写好的类,用时查看即可,只需要记住几个常用的

    五.关键字private

        private(私有)是一个修饰关键字,表示只能在本类中使用。

        public(共有) 是一个修饰关键字,表示你可以在所有类中使用。

      

public class Phone {
    //成员变量
    String brand;
   private int price;

}


public class duixiang {
    public static void main(String[] args) {
            Phone p = new Phone();
        p.price = 1988;//错误,不可使用price
    }

 2.为什么使用private,对于某些变量,它符合程序但不符合现实逻辑(如你输入手机价格为1000w,代码上可以,但现实中没有手机一千万),所以我们要再类中进行筛选(创建方法),将符合逻辑的留下来,不符合的提示错误

        一般来说创建一个set()赋值和get()获取

class Student {
      //成员变量
      String name;
      private int age;
  
      //提供get/set方法
      public void setAge(int a) {
          if(a<0 || a>120) {
              System.out.println("你给的年龄有误");
          } else {
              age = a;
          }
      }
  
      public int getAge() {
          return age;
      }
  
      //成员方法
      public void show() {
          System.out.println(name + "," + age);
      }
  }
/*
      学生测试类
   */
  public class StudentDemo {
      public static void main(String[] args) {
          //创建对象
          Student s = new Student();
          //给成员变量赋值
          s.name = "林青霞";
          s.setAge(30);
          //调用show方法
          s.show();
      }
  }

六.就近原则和关键字this   

        对于类中的变量叫做成员变量,方法中的变量叫做局部变量,如果一个成员变量和局部变量重名,哪个定义的近就用哪个,成为就近原则。

对于成员变量有默认初始值,局部变量则没有,必须赋值才能使用。

        成员变量存在堆区域,局部变量存在栈区域中。

        成员变量随着对象创建和消失而创建和消失,局部变量仅在调用方法时才存在。

class Student {
    //成员变量
    private String name;//成员变量
    private int age;

    //get/set方法
    public void setName(String n) {//n是局部变量
        name = n;
    }
}

     

如上述代码,对于一个变量名称,我们要见名知意,n这个名字不好,改成name,但会报错

class Student {
    //成员变量
    private String name;//成员变量
    private int age;

    //get/set方法
    public void setName(String name) {
        name = name;//错误!!!
    }
}

     对此,我们引入this关键字,this.变量名,会认为是使用的成员变量,而不是方法变量

class Student {
    //成员变量
    private String name;//成员变量
    private int age;

    //get/set方法
    public void setName(String name) {
        this.name = name;//正确!!!
    }
}

       七.构造方法

        构造方法(一个名词)是一种特殊的方法。

        作用:在创建对象时给成员变量赋值

        构造:构造方法的方法名要与类名一模一样(包括大小写),不能加返回值类型(void Int char....)与return。分为带参和空参构造方法。

                带参构造方法:在初始化对象时可以同时为对象赋值。

                空参构造方法:在初始化对象时使用默认值。

        调用:创建对象时有虚拟机调用,不可手动调用,每创建一次对象,就会手动调动      

        例子:Scanner sc = new Scanner(System.in);//这个标红的就是构造方法(带参数)

                      类    对象 = 关键字  构造方法

         注意事项:1.若你没有写构造方法,系统会自动给你写一个空参的构造方法。

                            2.若你提供了一个构造方法,系统将不会提供默认构造方法(即你写了带参的,                        就不会有空参的构造方法)

                             3.建议,空参和带参的都写一遍

        

八.标准javabean     

① 类名需要见名知意

② 成员变量使用private修饰

③ 提供至少两个构造方法

        * 无参构造方法

        * 带全部参数的构造方法        

④ get和set方法

​           提供每一个成员变量对应的setXxx()/getXxx()

⑤ 如果还有其他行为,也需要写上

快捷键(vscode)

//快读生成javabean,写好成员变量后,直接右键,找到源代码操作,generate constuctors 是生成构造方法()

//选择成员变量就是带参数,不选就是空参

//generate getterandsetter

你可能感兴趣的:(Java面向对象)