大数据 -- java入门基础 5

大数据 -- java入门基础 5,第1张

大数据 -- java入门基础 5

1、类与对象的关系:
            类相当于抽象的概念。
            对象是类的具体表现。
    
    类:   是一组成员变量和成员方法的集合,可以把类看作一个抽象的概念。
    对象:是该类的具体的表现,具体到一个个体。

    
2、现实事物:                                              
             属性:用于描述事物的信息。                例如:人的身高,体重等。
             行为:用来描述事物能够做什么的。     例如:人可以学习,吃饭等。
      
      类:
             成员变量:就是事物的属性。
             成员方法:就是事物的行为。

     定义一个类,其实就是定义这个类中成员变量和成员方法。


3、如何定义一个成员变量?
   (1)、定义的位置:在类中,方法外
   (2)、定义的格式:
                数据类型 变量名;

public String name;


4、如何定义一个成员方法?
   (1)、定义的位置:在类中
   (2)、定义的格式:
                修饰符 返回值类型 方法名(参数列表){
                        方法体;
                }

public void eat(){
    System.out.println("饿了吃饭。");
}


5、定义一个类:
   (1)、先创建成员变量
   (2)、再创建成员方法

public class Student{
    //创建成员变量
    String name;
    int age;
     
    //创建成员方法
    public void sleep(){
        System.out.println("困了就睡觉。");
    }
}

 

    如何创建对象:
           在main方法中调用。
           格式:类名 对象名 = new 类名();

Student student = new Student();


    创建好对象后,通过对象名访问成员变量:
           格式:对象名.非私有的成员变量名

student.name = "小米";           //给成员变量赋值
System.out.println(student.name);     //输出


    创建好对象后,通过对象访问成员方法:
           格式:对象名.非私有的成员方法

 student.sleep();


6、成员变量与局部变量的区别:
     (1) 、在类中定义的位置不同
                成员变量:类中,方法外
                局部变量:定义在方法内部
     (2) 、在内存中的位置不同
                成员变量:在堆内存中
                局部变量:在栈内存中
     (3) 、初始化值不同
                成员变量:系统会给予默认值
                局部变量:没有系统给的默认值,必须在定义的时候赋值,亦或者在方法中使用之前赋值,然后才能使用。
     (4) 、生命周期不同
                成员变量的生命周期:随着对象的创建而创建,随着对象的消失而消失
                局部变量的生命周期:随着方法的调用而创建,随着方法的调用完毕而消失

     注意事项:
         (1)、局部变量的名字可以和成员变量的名字一样,在方法中使用的时候,采用就近原则
                   方法中使用的变量,会先在方法内部查找,如果方法内部没有,去成员变量中查找。
         (2)、方法与方法之间的局部变量,不能互相调用。

public void show(){
    int a = 20;
    System.out.println(a);    
}

public void show1(){
    //System.out.println(a);   //报错,因为show1方法无法调用到show方法中的变量a
}


7、形式参数的问题:  (形参就是定义方法时后面跟的参数)
        (1)、当形式参数是基本数据类型的时候, 将来调用方法的时候传入的是常量值, 或者是该类型的变量。
        (2)、当形式参数是引用数据类型的时候, 将来调用方法的时候传入的是该类对象的地址值。
            
        (3)、当形式参数是基本数据类型的时候, 在方法中对变量做修改, 不会影响到外部实际的栈内存中的值。
        (4)、当形式参数是引用数据类型的时候, 在方法中对变量做修改, 会影响到外部实际的堆内存中的值。


8、匿名对象:
             没有名字的对象,是当new完对象之后直接使用,没有用变量名接收的对象。

      匿名对象的使用场景:
          (1) 、调用方法时,仅仅调用一次的时候,可以使用匿名对象。
                   注意,当调用多次的时候,不适合。每次new都是一个新的匿名对象,会频繁的在堆内存中开辟空间。
                   当匿名对象使用完毕之后,无法再使用第二次,就变成了一个垃圾(当栈中没有变量引用它的时候,判定是一个垃圾),等待被垃圾回收器回收。
          (2) 、当方法的参数类型是一个类的时候,可以使用匿名对象调用方法。

     在main方法中创建对象:

 PhoneDemo pd = new PhoneDemo();
 Phone phone = new Phone();

 //调用的时候,实际传的是对象phone的地址值
 pd.function(phone);     //调用方式1  
 new PhoneDemo().function(new Phone());    //调用方式2
 
 //调用方式1和调用方式2输出结果一致,而第2种就是匿名对象的方式调用。


9、面向对象的三大特质之一: 封装
            隐藏类的属性和相关描述信息,对外仅提供公共的get和set方法访问方式。

      (1)、封装的好处:
             隐藏实现细节,提供公共的访问方式
             提高了代码的复用性
             提高安全性。

      (2)、封装的原则:
             将不需要对外提供的内容都隐藏起来。
             把属性隐藏,提供公共方法对其访问。

10、private关键字:
       (1)、私有的。
         (2)、它可以修饰成员变量和成员方法。

private String name;
    private void password(){
    ...  
}

      (3)、被private修饰的成员只能在本类中进行访问,其他类中使用不了。

    
11、this关键字:
        this代表所在类的对象引用。
        方法被哪个对象调用,this就代表那个对象

   一般用在set方法中:

private String name;
    public void setName(String name){
    this.name = name;     //这里this.name就是指成员变量name
}


12、标准类的写法:
     (1)、成员变量:被private修饰
     (2)、成员方法:getXxx()和setXxx(),show()
     (3)、使用this关键字。

public class Phone {
    private String brand;
    private int price;
    private String color;

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getBrand() {
        return brand;    //其实这里隐藏了一个this,但是我们也可以不写,因为就近原则取的就是对象的成员变量
    }

    public int getPrice() {
        return price;
    }

    public String getColor() {
        return color;
    }

    public void show() {
        System.out.println("手机的品牌是: " + brand + " ,手机的价格是: " + price + " ,手机的颜色是: " + color);
    }
}

 

       今天已经是我学习java的第8天了,我感觉每天的我都很充实,我很喜欢这种感觉,我会继续加油。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5703547.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存