zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    迷宫问题 POJ 3984
    UVA 820 Internet Bandwidth (因特网带宽)(最大流)
    UVA 1001 Say Cheese(奶酪里的老鼠)(flod)
    UVA 11105 Semiprime Hnumbers(H半素数)
    UVA 557 Burger(汉堡)(dp+概率)
  • 原文地址:https://www.cnblogs.com/zs0322/p/10868014.html
Copyright © 2011-2022 走看看