黑马程序员——Java基础---面向对象

——Java培训、Android培训、iOS培训、UI培训、PHP培训、期待与您交流! ——

一、面向对象的三个特征

  • 封装(encapsulation)
  • 继承(inheritance)
  • 多态(polymorphism)

二、类和对象的概念

1.Java中最基本的单位是类,Java中用class描述事物也是如此

  • 成员变量 就是事物的属性
  • 成员方法 就是事物的行为

2.对象是该类事物的具体体现

三、成员变量和局部变量的区别

1.在类中的位置不同

  • 成员变量:在类中方法外
  • 局部变量:在方法定义中或者方法声明上

2.在内存中的位置不同

  • 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
  • 局部变量:在栈内存(局部变量属于方法,方法进栈内存)

3.生命周期不同

  • 成员变量:随着对象的创建而存在,随着对象的消失而消失
  • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

4.初始化值不同

  • 成员变量:有默认初始化值
  • 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。

注意事项:
      局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
      基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char
      引用数据类型变量包括哪些:数组,类,接口,枚举

四、匿名对象

匿名对象应用场景:

调用方法,仅仅只调用一次的时候。节省代码,匿名对象调用完毕就是垃圾。可以被垃圾回收器回收。匿名对象可以作为实际参数传递。

class AnonymousClass {
    public static void main(String[] args) {
        method(new Car());
        method(new Car());              //匿名对象可以当作参数传递
    }

    public static void method(Car cc) { //Car cc = new Car();
        cc.color = "red";
        cc.num = 8;
        cc.run();
    }
}

class Car {
    String color;           //颜色
    int num;                //轮胎数

    public void run() {
        System.out.println(color + "..." + num);
    }
}

五、封装和private关键字

      是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

封装好处:

  • 隐藏实现细节,提供公共的访问方式
  • 提高了代码的复用性
  • 提高安全性。

private关键字特点:

  • 是一个权限修饰符
  • 可以修饰成员变量和成员方法
  • 被其修饰的成员只能在本类中被访问

private的应用:

  • A:把成员变量用private修饰
  • B:提供对应的getXxx()和setXxx()方法
  • private仅仅是封装的一种体现形式,不能说封装就是私有
class PackageTest {
    public static void main(String[] args) {
        Person p1 = new Person();
        p1.name = "董改名";
        p1.setAge(24);
        System.out.println(p1.getAge());
    }
}

class Dong {
    String name;                
    private int age;                

    public void setAge(int a) {     
        if (a > 0 && a < 200) {
            age = a;
        }else {
            System.out.println("What are you 弄啥嘞!");
        }

    }

    public int getAge() {           
        return age;
    }

    public void look() {
        System.out.println(name + "年芳" + age);
    }
}

六、this关键字

      代表当前对象的引用 ,用来区分成员变量和局部变量重名

示例:

class VRGlasses {
    public static void main(String[] args) {
        HoloLens h = new HoloLens();
        h.setBrand("Microsoft HoloLens");
        h.setPrice(20000);

        System.out.println(h.getBrand() + "'s price is " + h.getPrice());
        h.vr();
    }
}

class HoloLens {                                
    private String brand;                   
    private int price;                      

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

    public String getBrand() {              
        return this.brand;                  //this.可以省略,你不加系统会默认给你加
    }

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

    public int getPrice() {         
        return price;
    }

    public void vr() {                  
        System.out.println("watching vr video");
    }
}

——Java培训、Android培训、iOS培训、UI培训、PHP培训、期待与您交流! ——

你可能感兴趣的:(java)