第一章:类和对象

1.1:类和对象的概念及什么是面向对象:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

   一切客观存在的事物都可以称为对象。类是对象的类型,确定对象将会拥有的属性和方法。我们描述对象的过程可以称之为面向对象。

1.2:类的定义:

    所有的Java程序都以类class为组织单位,类由属性和方法组成。定义类的步骤:

    • 定义类的名字
    • 编写类的属性,可以定义一个或多个类的属性,也可以不定义。
    • 编写类的方法,可以定义一个或多个类的方法,也可以不定义。
  • public class User {
    
        private String name;
        private String sex;
        private int age;
    
        public String getName() {
            System.out.println("获取任务的名称");
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }

1.3:Java中对象的使用:

  • 创建对象:
    • 即对象的实例化,如:User user = new User();-------------->类名 对象名 = new 类名();
  • 使用对象:
    • 引用对象的属性:对象名.属性,如:user.name = "张三";
    • 引用对象的方法:对象名.方法名(),如:user.getName();
      public class User {
          long telPhone;
          String name;
          public void getMessage(){
              System.out.println("name:"+name+"telPhone:"+telPhone);
          }
      }
      public class TestUser {
          public static void main(String[] args) {
              User user = new User();
              user.getMessage();
              user.name = "zhangsan";
              user.telPhone=18801480283L;
              user.getMessage();
          }
      }

      name:nulltelPhone:0
      name:zhangsantelPhone:18801480283

1.4:Java中的成员变量和局部变量:

  • 成员变量:在类中定义,用来描述对象将要有什么。
  • 局部变量:在类的方法中定义,在方法中临时保存数据。
  • 区别:
    • 作用域:局部变量的作用域仅限于定义它的方法。成员变量的作用域在整个类内部都可见。
    • 初始值不同:Java中会给成员变量赋予初始值,但是不会给局部变量赋予初始值。
    • 在同一个方法中不允许有同名的局部变量,在不同的方法中允许有同名的局部变量
    • 两类变量同名时,局部变量优先级高。

1-5:Java中的构造方法:

  • 构造方法的作用:定义在Java类中的一个用来初始化对象的方法。特点:名称与类名相同,无返回值。如:User user = new User(); 
  • 构造方法的种类:无参构造方法和有参构造方法。
    • 无参构造方法的语法:
      public class User {
          public User(){
              System.out.println("这是一个无参的构造方法");
          }
      }
    • 有参构造方法的语法:User user = new User(); 
      public class User {
          int age;
          String name;
          public User(int age1,String name1){
              age = age1;
              name = name1;
              System.out.println("这是一个有参的构造方法");
          }
      }
      public class TestUser {
          public static void main(String[] args) {
              User user = new User(12,"zhangsan");
      
          }
      }
    • 当没有指定构造方法时,系统会自动添加无参构造方法。当有指定构造方法时,无论是有参、无参的构造方法,都不会自动添加无参的构造方法。构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不太的参数选择相应的方法。构造方法不但可以给属性赋值,还可以给属性赋予一个合理的值。
      public class User {
          int age;
          String name;
          public User(){
              System.out.println("这是一个无参的构造方法");
          }
      
          public User(int age1,String name1){
              if(age1 < 0){
                  System.out.println("你输入的年龄值有问题");
                  age1 = 0;
              }else{
                  age = age1;
              }
              name = name1;
              System.out.println("这是一个有参的构造方法");
          }
      }
      public class TestUser {
          public static void main(String[] args) {
              User user = new User(-2,"zhangsan");
          }
      }

      输出结果:

      你输入的年龄值有问题
      这是一个有参的构造方法

1.6:Java中的static使用之静态变量:

  • 静态成员:Java中呗static修饰的成员,她属于整个类所有,而不是某个对象所以,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问。使用 static 可以修饰变量、方法和代码块。例如:
    • 静态变量:使用 static 修饰的变量。public class HelloWorld {
          // 定义静态变量,保存班级名称
          static String className = "JAVA开发一班";
          public static void main(String[] args) {
              // 访问静态变量,输出班级名称
              System.out.println(HelloWorld.className);
              //创建类的对象,使用对象名的形式访问金泰变量,输出班级名称
              HelloWorld hello = new HelloWorld();
              System.out.println(hello.className);
              //使用对象名的形式修改静态变量的值
              hello.className = "开发二班";
              System.out.println(hello.className);
          }
      }
    • public class HelloWorld {
          //定义变量
          String name = "zhangsan";
          // 定义静态变量score1
          static int score1 = 86;
          // 定义静态变量score2
          static int score2 = 92; 
          // 定义静态方法sum,计算成绩总分,并返回总分
          public static int sum() { 
            return score1+score2;
          }
          //普通方法中,可以直接访问同类的非静态变量和静态变量
          public void show(){
              System.out.println("名字:" + name+"的成绩为:" + score2);
          }
          
          public static void main(String[] args) {
              // 调用静态方法sum并接收返回值
              int allScore = HelloWorld.sum();
              System.out.println("总分:" + allScore);
              //在静态方法中调用非静态变量
              HelloWorld hello = new HelloWorld();
              System.out.println("名字:" + hello.name);
              //在静态方法中调用非静态方法
              hello.show();
          }
      }
      
      PS:
      1、静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
      2、如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。
      
      3、在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。
      
      4、静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。

1.7:Java中的static使用的静态初始化块

  • 静态初始化块:Java 中可以通过初始化块进行数据赋值。使用 static 修饰初始化块,就称为静态初始化块。静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
    public class HelloWorld {
        
        String name; // 声明变量name
        String sex; // 声明变量sex
        static int age;// 声明静态变量age
        
        // 构造方法
        public HelloWorld() { 
            System.out.println("通过构造方法初始化name");
            name = "tom";
        }
        
        // 初始化块
        { 
            System.out.println("通过初始化块初始化sex");
            sex = "男";
        }
        
        // 静态初始化块
        static { 
            System.out.println("通过静态初始化块初始化age");
            age = 20;
        }
        
        public void show() {
            System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
        }
        
        public static void main(String[] args) {
            
            // 创建对象
            HelloWorld hello = new HelloWorld();
            // 调用对象的show方法
            hello.show();
            
        }
    }

     

 

 

 
 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄