day_09 面向对象

1.面向对象

    面向过程:直面程序,程序较小
    面向对象:交代任务,程序较大,分模块

    1.1 概述:是软件开发方法,一种编程范式。

    1.2面向对象和面向过程:
        面向过程:侧重分步骤。 
            进行分析,第一步、第二步……
        面向对象:侧重分模块。
            做一件事先分析哪一步交给谁做。
        总结:
            面向对象优势:可扩展性,可维护性,灵活性,使程序耦合度降低。
                    缺点:性能比面向过程较差。
    
    1.3构造方法:
        静态属性调用:类名.静态变量 / 类名.静态方法(参数)
        注:调用当前类中静态属性,类名可以省略。

        成员属性调用:对象.成员变量 / 对象.成员方法(参数)
        注:加前缀是为了找到这个方法。
            创建对象: new:在堆内创建对象空间。   eg:Contructor_01 c = new Contructor_01();
            调用构造方法: 方法名();
        
        构造方法是每个类都有的,并且用于创建该类的对象。(可以重载)
        注:如果该类中没有编写构造方法,编译器会帮我们生成一个无参构造。
            如果该类中编写了构造方法,不管写的是不是有参,默认的无参构造都不再自动生成,
            所以我们在写有参构造的时候,可以手动编写一个无参构造。

        构造方法在new的时候自动执行。且只执行一次。new一次执行一次。
        
        构造方法: 修饰符 方法名/类名(参数列表){方法体}
        注:构造方法的修饰符只需要使用权限控制,不能使用static,
            构造方法没有返回值,连void都没有,
            构造方法的方法名必须和类名一致。

        构造方法与成员方法的区别:
                构造方法用于创建对象,并进行初始化。
                成员方法用于完成特定功能。
        静态方法与成员方法的区别(p49):
                静态方法是公共的,谁都可以调用,
                成员方法是私用的,调用需要创建对象,
                

    1.4类和对象:
        对象:是某一个具体的事物。
        类:描述了这一类事物的属性和特征,进行抽象的模板。
            对象就是类的实现,保存了属性的值。
        
        静态变量和成员变量的区别(方法中如果调用成员变量/属性就是成员方法):
            如果对象和对象之间有相同的属性 相同 的值,就使用静态变量。
            如果对象和对象之间有相同的属性 不同(也可以相同) 的值,就使用成员变量。       

            成员方法:方法中需要使用成员属性的时候。
            静态方法:方法中不需要使用成员属性的时候。

    1.5实例化:1.加载对应类文件
               2.new在堆内存创建空间
               3.执行构造方法,对堆内存对象进行初始化
               4.构造方法弹栈,并把堆内存地址返回给变量

    1.6对象使用:
        Student s1 = new Student();   //创建一个学生对象
        s1.name = "张三";             //成员变量赋值
        System.out.println(s1.name);  //成员变量调用
        System.out.println(s1.age);   //没赋值的属性取默认值

    1.7 Bean:
        javaBean是一种Java语言写成的可重用组件,是一个类。
        
        接着写

        
    1.8常见异常:
        // student = null;
        // 当使用null值 访问成员属性的时候,会出现空指针异常
        // Exception in thread "main" java.lang.NullPointerException
        // System.out.println(student.age);
   
    1.9对象调用静态属性
        静态属性使用类名调用;
        eg: System.out.println(Student.i);
        也可以使用对象调用,在编译阶段会把对象转换为类名调用;所以该变量是不是null也没有关系了;
        eg:  Student.out.println(student.i); //等价于Student.i 

    1.10注释事项
        1.调用静态成员:
            静态方法中,无法直接使用非静态属性,需要使用对象调用才行。
        
        2.传值和传引用
            public static void main(String[] args){
                    // int i = 18;
                    // m1(i);
                    // System.out.println("main->" + i);
                    Animal a = new Animal(18);
                    m2(a);
                    System.out.println(a.age);
                }
                public static void m1(int i){
                    ++i;
                    System.out.println("m1->" + i);
                }
                public static void m2(Animal a){
                    a.age++;
                    System.out.println(a.age);
                }
            }

        3.区分成员方法和构造方法
            public class OOP_06{
                public static void main(String[] args){
                    OOP_06 o1 = new OOP_06();
                    //OOP_06 o2 = new OOP_06(15);
                }
                //构造方法
            public OOP_06_1(){
                System.out.println("无参构造");
            }
            //成员方法,成员方法可以和类名相同
            //如何区分同名方法和构造方法呢? 看返回值,构造方法没有返回值,void都没有
            public void OOP_06_1(int i){
                System.out.println("有参构造");
            }
            

oop包!
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值