0515 面向对象 类与对象、局部、成员变量、基本、引用类型、封装 private 和this 及应用

面向对象

方法:java中,用来完成解决某件事或实现某个功能的方法

格式:

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型  参数名2,....){

执行语句

.....

return 返回值;

}

class 里面只有两种东西  属性和方法

① 修饰符:比较多,有对访问权限进行限定的,如:静态修饰符static  最终修饰符final;

②、返回值类型:用来限定方法返回值的数据类型(当声明没有返回值时,类型处写void);

③、参数类型:用来限定调用方法时传入参数的数据类型

④、参数名:是个变量,接收调用方法时传入的数据

⑤、return :用于结束方法以及返回方法指定类型的值(当声明没有返回值时,可省略)

⑥、返回值:被return语句返回的值,该值会返回给调用者。

 1、面向对象与面向过程的区别(都是一种思维方式)

①、面向过程是执行者(自己做事情)

 ②、面向对象更符合我们思考习惯的思想,复杂事情简单化,从执行者变指挥者(角色发生改变)

2、类与对象:

①、类是一组相关属性和行为的集合,一个抽象的概念

②、对象是该类事物的具体

③、创建对象的格式

类名 对象名 = new 类名();
public class Car {
    String color;
    int number;
    void run() {
        System.out.println(color + ":" + number);
    }
}
//测试类

public class CarDemo {
    public static void main(String[] args) { 
        //测试:Car类中的run方法。
        // 1,创建Car的对象。给对象起个名字。
        Car c = new Car();// c是类类型的变量。c指向了一个具体的Car类型的对象。
        // 2,通过已有的对象调用该对象的功能。格式:对象.对象成员;
        // 3,可以该对象的属性赋值。
        c.color = "red";
        c.number = 4;
        c.run();
    }
}

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

1:定义的位置不同:

  成员变量是定义在类里面(不在方法中)

  局部在(类中的)方法中或者{}语句里面的变量

2:在内存中的位置

  成员在堆内存的对象中

  局部在栈内存的方法中

3:生命周期不同:

  成员随着对象出现而出现在堆中,随对象消失从堆中消失(gc垃圾回收机制)

  局部随着方法的运行而出现在栈中,随方法的弹栈消失

4:初始化不同:

  成员在堆中,默认了初始化值

  局部没有初始化默认值,手动赋值才能使用。

 PM:

封装:就是一种包装。专业点叫信息隐藏 private

修饰符:public 是公共的访问  private是本类

以前通过属性赋值 ,现在用方法进行赋值 set方法赋值 get方法取值

①、好处:隐藏实现细节,提供公共访问细节,提高代码复用、安全性

②、设计原则:隐藏了不想让外界知道的细节,属性隐藏,提供公共的访问方式。

③、体现:类、方法、private修饰成员变量

private:(封装体现形式

①、私有的意思,权限修饰符,可以修饰成员变量和成员方法

②、特点:

  被private修饰过的成员只能在本类中访问;

③、应用:

  类中不需要对外提供的内容都需要私有化,包括属性和方法;

  以后再描述事物,属性都私有化。

  对成员变量的访问:
        赋值(设置 set )、取值(获取 get)

this关键字

  在成员变量前加this 专门解决成员变量和局部变量同名问题  哪个对象调用this方法,this就代表哪个对象。

package com.oracle.Demo02;
public class Peoper {
    private String name;
    private int age;
    //用set方法赋值    
    public void setName(String name){
        //this专门解决成员与局部变量同名问题
        this.name=name; 
    }
    //用get方法取值
    public String getName(){
        //返回值 return
        return name;
    }
    public int getAge(){
        return age;
    }
    public void setAge(int age){
        //判定如果a大于等于0或者小于等于100
        //用了this之后就无序 加判定 if..else了
        /*if(age>=0&&age<=100){
            }else{
            age=0;
        }*/
        this.age=age;
    }
    public void speak(){
        System.out.println("我叫"+name+",今年"+age+"岁了");
    }
}
package com.oracle.Demo02;

public class Demo01 {

    public static void main(String[] args) {
        /*Peoper p=new Peoper();
        p.name="胸大";
        p.age=18;
        p.setAge(18);
        p.setName("胸大");
        System.out.println(p.getName()+" "+p.getAge());*/
        //判断两人是否是同龄人  先new两个人出来
        Peoper p1=new Peoper();
        p1.setAge(18);
        Peoper p2=new Peoper();
        p2.setAge(19);
    }
}

私有的快捷键  Source-Generate Getters and Setters  选择 select all

褐色选择区域:快捷键工具的使用效果

//比较两人是否同龄
package com.oracle.Demo02;
public class Peoper {
    private String name;
    private int age;
    //用set方法赋值    
    public void setName(String name){
        //this专门解决成员与局部变量同名问题
        this.name=name;
    }
    //用get方法取值
    public String getName(){
        //返回值 return
        return name;
    }
    public int getAge(){
        return age;
    }
    public void setAge(int age){
        this.age=age;
    }
    //比较两个人是否是同龄人
    public boolean compare(Peoper p){
        return this.age==p.age;
    }
}
package com.oracle.demo02;

public class Demo01 {
    public static void main(String[] args) {
            Person p1=new Person();
        p1.setAge(18);
        Person p2=new Person();
        p2.setAge(19);
        boolean flag=p1.compare(p2);
        System.out.println(flag);
    }
}
原文地址:https://www.cnblogs.com/zs0322/p/10868014.html