随堂笔记6

随堂笔记6

面向对象编程

  1. 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据

  2. 抽象

  3. 三大特性:封装,继承,多态

方法的调用以及对象创建调用

  1. 可以调用不同package(包)中不同类(class)的函数,加有static关键字可直接调用,其它的只能通过new一个对象将函数实例化,通过调用实例化对象调用函数

  2. 无static函数

    //Student类
    package com.yyl.oop;

    public class Student {
       public void say(){
           System.out.println("学生说话了");
      }
    }
    //主函数demo01
    package com.yyl.oop;

    public class demo01 {
       public static void main(String[] args) {
           //对象类型 对象名字 =对象值;此处对象值为一个实例化对象
           Student student=new Student();
           //student代替Student类
           student.say();
      }
    }
  3. 带有static函数的

    //Student类
    package com.yyl.oop;

    public class Student {
       public static void say(){
           System.out.println("学生说话了");
      }
    }
    //主函数demo01
    package com.yyl.oop;

    public class demo01 {
       public static void main(String[] args) {
         Student.say();
      }
    }
  4. static区分

    1. 带有static:和类一起加载的,类存在函数就存在

    2. 不带static:类实例化之后才存在

  5. 实例化即new一个新对象代替原函数

引用传递

  1. 引用传递传递一个对象(相当于c语言传递一个指针)

    1、值传递

    在方法的调用过程中,实参把它的实际值传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。//参考计算机系统基础的栈理论

    2、引用传递

    引用传递弥补了值传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址值传递过去,函数接收的是原始值的首地址值。在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址,也就是说操作的其实都是源数据,所以方法的执行将会影响到实际对象

public class demo02 {
   public static void main(String[] args) {
       Person student=new Person();
       System.out.println(student.name);//输出“null”
       change(student);
       System.out.println(student.name);//输出“阿deair”
  }
   public static void change(Person student){//引用传递,传递一个类
       student.name="阿deair";//传递类可以改变类的值
       //解释:相当于传递对象的地址(指针)
  }
}
class Person{//定义一个类,注意在类的外面
   String name;//默认初始化为null
}

类与对象的创建

  1. 创建类

    package com.yyl.oop2;

    public class student {
       String name;
       int age;
       String num;
       int grade;
       public void study(){
           System.out.println(this.name+"在学习");//引用自己类的变量this.变量名
      }
    }
  2. 声明对象和调用

    package com.yyl.oop2;

    public class demo01 {
       public static void main(String[] args) {
           //类:抽象的,实例化
           //类实例化后会返回一个自己的对象
           //xiaoming对象就是student类的具体实例
           student xiaoming=new student();
           xiaoming.name="小明";
           xiaoming.age=10;
           System.out.println(xiaoming.name);
           System.out.println(xiaoming.age);
      }
    }
  3. 总结:相当于c语言中的结构体+java的包与类的作用

    注意声明类的时候保持类的名字和创建时的名字保持一致,否则调用时会有问题

构造器

  1. 构造器是类中的一种函数,函数名和类名相同,函数没有返回类型和返回值,

  2. 构造器作用:new的本质就是调用构造器,有参构造可以用于初始化

package com.yyl.oop2;

public class demo02 {
   public static void main(String[] args) {
       student02 xiaoming=new student02("xiaoming");//默认无参构造器,不需要传递初始值
       System.out.println(xiaoming.name);
  }
}
package com.yyl.oop2;

public class student02 {
   //一个类即使什么也不写,他也会存在一个类
   String name;
   //默认无参构造器,不需要传递参数,系统自动生成
   public student02(){}

   //自定义构造器,需传递对应类型参数,一般用于初始化
   //一旦定义有参构造器,无参就必须显示定义(删除有参构造?)
   public student02(String x){
       this.name=x;
  }
}

堆存放new的数组和对象,栈存放基本变量类型和引用变量

posted @ 2020-09-10 21:34  Deair  阅读(114)  评论(0编辑  收藏  举报