Java笔记5——面向对象,类,成员变量,成员方法

接下来进入Java语言中的重要的部分:面向对象
首先讲解一下类的概念:
类:是一组相关的属性和行为的集合体;
对象:是该类事物的具体体现;
类是java中最小的单位,体现了封装的思想,封装了成员变量和方法;
类是一个抽象的概念,不能直接进行调用,我们需要创建对象,对其进行实例化后,通过对象调用该类的方法和属性,对象才是该类的具体体现;
面向对象的例子:洗衣服
泡衣服——洗衣粉搓衣服——漂洗衣服——晾衣服
这一系列的动作是面向过程的洗衣服,如果是面向对象洗衣服,我们只需要用一个全自动洗衣机即可,只关注洗衣机,不用关注洗衣机到底是怎样洗衣服的;
面向对象的特点:封装,继承,多态;
学生事物与学生类的对应关系:
学生事物--------------------学生类
属性--------------------------成员变量
行为--------------------------成员方法

例子1:定义一个学生类
成员变量:姓名,年龄,学号
成员方法:睡觉,吃饭,上课

public class Student{
        String  name"小明";;
        int age=12;
       String  number="130212";

       public void eat(){
           System.out.println("吃饭");
      }
      public  void sleep(){
          System.out.println("睡觉");
    }
      public  void study(){
          System.out.println("上课");
    }   
}

既然定义了类,我们需要再定义一个测试类来调用此类:
创建对象格式:类名 对象名=new 类名
成员变量调用格式:对象名.变量名
方法调用格式:对象名.方法名(…)

public  class StudentTest{
   public static void main(String[] args){
      Student student=new Student();//创建对象
      System.out.println("姓名:"+student.name+",年龄:"+student.age+",学号:"+student.number);
      student.sleep();
      student.eat();
  }
}

2.一般成员变量进行私有化,采用 set ,get 方法设置初值,得到初值。
private 私有的,用它来修饰成员变量,学生类和测试类的代码改为如下格式:

public class Student{
       private  String  name;
       private  int age;
       private  String  number;

       public void setName(String name){
          this.name=name;
      }
      public  void setAge(int age){
          this.age=age;
    }
      public  void setNumber(String number){
          this.number=number;
    }   
     public String getName(){
         return name;
    }
    public int  getAge(){
      return age;
   }
    public String getNumber(){
        return number;
    }
}

在测试类中采用set设置初值,get 得到初值

public  class StudentTest{
   public static void main(String[] args){
      Student student=new Student();//创建对象
     student.setName("小明");
     student.setAge(12);
     student.setNumber("130212");
     System.out.println(student.getName());//小明
     System.out.println(student.getAge());//12
    System.out.println(student.getNumber());//130212
   }
}

3.一个类要包含:成员变量,构造方法,成员方法;上面我们介绍了成员变量与成员方法,接下来要说的就是构造方法了 ;
构造方法:名字与类名相同,没有void ,也没有return;
可以有参数,称之为有参构造,也可无参数,称之为无参构造;在没有定义构造方法时,系统默认为无参构造;当有确定的有参构造时,系统将不再默认为有无参构造了,如果此时需要用无参构造,需要定义出来;
采用有参构造可以直接在调用成员变量时给赋初值;
例如对学生类使用构造方法:

public class Student{
       private  String  name;
       private  int age;
       private  String  number;

      public Student(String name,int age,String number){
                    this.name=name;
                    this.age=age;
                    this.number=number;
    }
       public void setName(String name){
          this.name=name;
      }
      public  void setAge(int age){
          this.age=age;
    }
      public  void setNumber(String number){
          this.number=number;
    }   
     public String getName(){
         return name;
    }
    public int  getAge(){
      return age;
   }
    public String getNumber(){
        return number;
    }
}

测试类如下:

public  class StudentTest{
   public static void main(String[] args){
      Student student=new Student("小明",12,"130212");
     System.out.println(student.getName());//小明
     System.out.println(student.getAge());//12
    System.out.println(student.getNumber());//130212
   }
}

构造方法可以重载,方法名一致,参数不同,调用方法时根据参数不同,确定调用哪个方法;
4.接下来说下static关键字,其意思是静态的;
在其他的一些成员方法中我们也可以定义为静态的。但是有几点需要注意:1.静态方法中只能访问静态成员变量或者静态成员方法,非静态方法可以调用静态的,也可以调用非静态的。2.在静态方法中没有this关键字;
static关键字的特点:随着类的加载而加载;优于对象先存在;被类的所有对象所共享。
一般在调用static修饰的变量或者方法时,采用类名进行调用。
例子2:定义一个国籍为static成员变量,所有人共享这个国籍;

public class GuojiDemo {
    private  String  name;
     static  String guoJi;//国籍是共用的,所以定义为static

    public void setName(String name){
        this.name=name;
    }

    public void setGuoJi(String guoJi){
        this.guoJi=guoJi;
    }

    public String getName(){
        return name;
    }

    public static String getGuoJi(){
        return guoJi;
    }
}

测试类:

public class TestGuoJi {
    public static void main(String[] args) {
        GuojiDemo guoJi1=new GuojiDemo();
        guoJi1.setName("张三");
        guoJi1.setGuoJi("中国");

        System.out.println(guoJi1.getName());
        System.out.println(GuojiDemo.getGuoJi());//被静态所修饰的成员,推荐使用类名调用

        GuojiDemo guoJi2=new GuojiDemo();
        guoJi2.setName("李四");
        guoJi2.setGuoJi("美国");

        System.out.println(guoJi1.getName());
        System.out.println(GuojiDemo.getGuoJi());//静态内存中的中国被美国覆盖,故输出不一致

        System.out.println(guoJi2.getName());
        System.out.println(GuojiDemo.getGuoJi());
    }
}

以上是我学习过程中的一些知识点的总结,如果有错误的地方,欢迎大家指正评论,希望我们一起学习,一起进步!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值