note_doit_day07

1.面向对象:
    面向过程:亲历亲为处理每个过程.
    面向对象:需要实现某个功能时,不关心具体步骤,只关心结果,找一个具有该功能的类,实现操作.
    特点:
        1.符合思维习惯.
        2.将复杂事情简单化.
        3.角色发生转换,编程者称为指挥者
    
    三大特征: 封装 继承 多态

    类:类是对现实事物的抽象描述. 现实事物都具备属性和功能 ,可以使用类的成员变量描述事物的属性 使用类的
        成员方法描述事物的功能
    对象:根据类的描述 创建出来的具体的实例

2.类的定义:
         定义类的格式
         public class 类 {
              数据类型 属性名;
              数据类型 属性名;

              修饰符  返回值类型 方法名(参数){
                    方法体
                    return 返回值;
              }
         }

         修饰符:只写public  不写static
         
    Demo:
        public class Person {

             String name;
             int age;
             public void eat(){
                 System.out.println(name+"吃");
             }

             public void sleep(){
                 System.out.println(name+"睡");
             }
             public void hitBeanBean(){
                 System.out.println("敲代码了!");
             }
        }
    Test:
            /*
             测试Person类

             引用数据类型
                  1.导包
                      同一包下 不需要
                  2.定义变量并赋值(创建对象)
                      数据类型  对象名 = new 数据类型();

                  3.访问属性 调用方法
                      对象名.属性名;
                      对象名.方法名(参数);

         */
        public class Test_Person {
            public static void main(String[] args) {
                Person p = new Person();
                p.name = "柳岩";
                p.age = 38;

                System.out.println(p.name);
                System.out.println(p.age);


                p.eat();
                p.sleep();
                p.hitBeanBean();
                System.out.println("----------------------------");
                Person p2 = new Person();
                p2.name = "唐嫣";
                p2.age  = 18;
                p2.age = 28;

                System.out.println(p2.name);
                System.out.println(p2.age);

                p2.eat();
                p2.sleep();
                p2.hitBeanBean();
            }
        }

    手机类:
        public class Phone {

        String brand; //品牌
        String color;
        double price;
        String ownerName; //机主姓名
        String ownerTel; //机主的手机号


        public void call(){
            System.out.println("打电话了");
        }

        public void call(String name){

            System.out.println("给"+name+"打电话了");
        }

        public void sendMessage(){
            System.out.println("发短信了");
        }

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

        public void set(String b,String c,double p){
            brand = b;
            color = c;
            price = p;
        }


        public  String getInfo(){
            return ownerName+":"+ownerTel;
        }
    }
    
    调用手机类完成功能:
        public class Test {
        public static void main(String[] args) {
            Phone p = new Phone();
            p.brand = "苹果";
            p.color = "黑色";
            p.price = 250.0;

            p.ownerName = "柳岩";
            p.ownerTel = "13800000000";


            p.call();
            p.sendMessage();
            p.call("唐嫣");

            p.show();

            System.out.println("--------------");
            p.set("华为","白色",300.0);
            p.show();

            System.out.println("-------------");
            String info = p.getInfo();
            System.out.println(info);
        }
    }
    
3.成员变量与局部变量
     成员变量:定义在类中方法外的变量
     局部变量:定义在方法内的变量
     
    1.成员变量与局部变量的区别:
        定义的位置不同
           成员变量:类中方法外
           局部变量:方法内
        作用域不同
           成员变量在整个类中都生效
           局部变量只在当前方法中 代码块中生效
        默认值不同
           成员变量有默认值
           局部变量没有默认值不赋值 不能使用
        内存中的位置不同
           成员变量随着对象进入到堆内存中
           局部变量随着方法进入到栈内存中
        生命周期不同
               成员变量随着对象的产生而产生 随着对象的销毁而销毁
               局部变量随着方法的调用而产生 随着方法的弹栈而销毁
               
    2.tips:this可以区分成员变量和局部变量 但是这只是它表现出来的功能
         其功能本质 this只能在方法中使用 代表当前对象的引用
         谁调用方法 this就代表谁
         
    练习:
        定义一个程序员类
              属性
                 姓名
                 年龄
                 工资   salary
                 奖金   bonus
              方法
                 工作  写代码
                 计算薪资  工资+奖金
                 展示所有属性的方法
                 get/set方法
         定义测试类
              创建Coder对象
              调用方法
    类:
        public class Coder {
        private String name;
        private int age;
        private double salary;
        private double bonus;


        public void work(){
            System.out.println("写代码了");
        }

        //计算薪资
        public double getMoney(){
            return  salary+bonus;
        }

        //展示所有属性
        public void show(){
            System.out.println("姓名:"+name);
            System.out.println("年龄:"+age);
            System.out.println("工资:"+salary);
            System.out.println("奖金:"+bonus);
        }

        public void setName(String name){
            this.name = name;
        }
        public String getName(){
            return name;
        }

        public void setAge(int age){
            this.age = age;
        }

        public int getAge(){
            return age;
        }

        public void setSalary(double salary){
            this.salary = salary;

        }

        public double getSalary(){
            return salary;
        }

        public void setBonus(double bonus){
            this.bonus = bonus;
        }

        public double getBonus(){
            return bonus;
        }
    }
    测试类:
        public class Test_Coder {
        public static void main(String[] args) {
            Coder c = new Coder();

            c.setName("柳岩");
            c.setAge(38);
            c.setSalary(15000.0);
            c.setBonus(20000.0);

            c.show();

            c.work();

            double money = c.getMoney();
            System.out.println(money);
        }
    }

4.JavaBean:
     JavaBean的概念:
        如果一个类具备 私有的成员变量 空参数构造方法  get/set方法 就可以称这个类是一个JavaBean类
     面向对象 三大特征
        封装,继承,多态

5.包的声明和访问:
    1.包的声明
       package 包名.包名.包名;
       tips:
           声明class文件所在的位置  idea帮我们自动生成
           包的定义一般都是公司域名的反写   baidu.com     com.baidu
           必须全部小写 数字不能开头
    2.包的访问
        1.带包名访问 全路径访问
        2.两种可以可以省略包名
         同一个包下的 可以直接访问
         java.lang包下的类 可以直接访问不带包名
    3.导包访问
       import 包名.包名.类名;
      tips:导包必须写在包的声明的下面,如果访问不同包下 相同类名的类  只有一个类可以导包 另一个必须类全名访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值