Java基础6---面向对象

Posted 冬有雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础6---面向对象相关的知识,希望对你有一定的参考价值。

一、面向对象的三个特征

  • 封装(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基础6---面向对象的主要内容,如果未能解决你的问题,请参考以下文章

JAVA基础6-面向对象1

Java基础笔记6

Java入门——面向对象基础

面向对象基础6

Java基础

Java基础 - 面向对象 - 类的定义