zoukankan      html  css  js  c++  java
  • 五(一)、类&对象概述

    面向对象学习的三条主线

      1.java类及成员变量;类的成员:属性、方法,构造器、代码块,内部类

      2.面向对象的三大特征:封装性、继承性、多态性

      3.其他关键字:this super static final abstract interfae package import

     一、面向对象:简言之,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做;

      1.在Java语言范畴中,我们将功能、结构等封装到类中,通过实例化来调用具体的功能结构;
      2.涉及到java与前端语言,后端的数据库交互时,前后端的结构在Java层面交互,都体现为类、对象;

    ① 面向对象和面向过程的区别: 例如:人把大象装冰箱

        面向过程:1.把冰箱门打开 2.抬起大象 3.塞进冰箱 4.关闭冰箱门

        面向对象:创建3个类:人、大象 冰箱;

           人: 打开和关闭冰箱门 和抬起大象;

           大象: 进入冰箱,

           冰箱:有打开 和关闭

         人{

           打开(冰箱门){

            冰箱.开开()

            }

            抬起(大象){

            大象.进入(冰箱)

           }

            关闭(冰箱门){

               冰箱。关闭()

            }

          }

      

         冰箱{

           开开(){

            }

          关闭(){

            }

          }

        大象{

           进入(冰箱){

          }

         }

      

      二、类和对象的区别:

     ①类:对事物的描述 是抽象的、概念上的定义;比如 人;

     ②对象:是实际存在的该类事务的每个个体(即 在内存中存在的,占据内存空间) 因而也称为实例(instance) 比如 小明;

      1.面向对象程序设计,重点是类的设计

      2.设计类,就是设计类的成员

      3.如果创建了一个类的多个对象,每个对象独立的拥有类的属性;(非static)意味着,如果修改一个对象的属性a,则不影响另外一个属性a的值

      

    三、  类和对象的使用

      1.创建类,设计类的成员

      2.创建类的对象

      3.通过对象 对象.属性 对象.方法 调用对象的结构

     1 //人的一个类
     2 class Person{
     3     //属性(成员变量)field
     4     String name;
     5     int age = 1;
     6     boolean isMale;
     7     //方法(成员方法)method
     8     public void eat() {
     9         System.out.println("人可以吃饭");
    10     }
    11     
    12     public void talk(String lanuage) {
    13         System.out.println("人可以说话,使用"+lanuage+"语言。");
    14     }
    15 }
     1 //使用类 创建类的实例化
     2         public static void main(String[] args) {
     3             //使用类
     4             Person person = new Person();//创建对象
     5             person.name = "tom";//调用属性
     6             person.isMale = true;
     7             System.out.println(person.name);
     8             person.talk("中文");//方法的调用
     9             
    10             Person person1 = new Person();//创建对象
    11             System.out.println(person1.name);
    12             
    13             Person person2 = new Person();//创建对象
    14             person2 = person;//将person对象的地址值赋值给了person2;
    15             System.out.println(person2.name);
    16             person2.age = 10;
    17             System.out.println(person.age);
    18             
    19         }

      对象的内存解析:

      

     四、 类中属性的使用:

      属性(成员变量) vs 局部变量

      1.相同点:定义变量的格式;都有对应的作用域;先声明后使用;

      2.不同点:

         2.1在类中声明的位置不同

         2.2属性直接定义在类的一对{}中;局部变量:声明在方法内,方法形参 构造器形参,构造器局部变量

         2.3权限修饰符:可以在声明属性时,指明权限修饰符,常用修饰符:private public 缺省 protected 局部变量 不可以使用权限修饰符;

         2.4 默认初始化值,类的属性根据其类型都有默认初始化值(整型(byte short int long)默认0;char 默认 0 浮点型 0.0,Boolean false 引用数据类型 (对象 数组 接口):null);局部变量没有默认初始化值;

       局部变量没有默认初始化值,必须赋值;形参在调用的时候赋值;

      

    五、类中方法的使用

      方法:类应该具有的功能;比如 Math.random();Arrays.sort();....

      public void eat() {

        System.out.println("人可以吃饭");

      }

      public void talk(String lanuage) {

        System.out.println("人可以说话,使用"+lanuage+"语言。");

      }

      public String getName(){}

     

    1.1方法的声明:

      权限修饰符 返回值类型 方法名(形参列表){

        方法体

        };

      1.1.1 权限修饰符 private public 缺省 protected

      1.1.2 返回值类型 有返回值、没有返回值;

        ①若有返回值,在声明时需要指定返回值类型,在方法中使用return 返回指定类型的变量or常量

        ②若方法没有返回值,则方法声明时使用void来表示,通常没有返回值的方法中,就不用return返回;如果只用 只能 "return;"表示结束此方法;

      1.1.3 我们定义方法该不该有返回值?凭经验;

      1.1.4方法名 属于标识符;需要遵循标识符规范;

      1.1.5 形参列表:方法可以声明0个 1个或者多个形参;格式:数据类型1 形参1,数据类型2 形参二;

      1.1.6 方法体:方法功能的体现;

     补充:

    编译后生成字节码文件,我们使用jvm中的类的加载器和解释器对生成的字节码文件进行解释运行;意味着,需要将字节码文件对应的类加载到内存中,才涉及到内存解析。

    虚拟机栈 即平时说的栈,我们将局部变量存储在栈结构中;堆:我们将new出来的结构存放在堆空间中 比如 数组,对象(这里指的是非static)。

    方法区:类的加载信息,常量池,静态域

  • 相关阅读:
    数据集冲突
    苹果如何设计iPad的商业模式
    IT部门应如何制定技术路线图
    关于软件测试
    c#写文件
    正则表达式语法及常用表达式。
    使用Mysql的Replication功能实现数据库同步
    CMMI=大象关冰箱?
    asp.net 中RegularExpressionValidator的bug|IE的bug?
    Singleton 模式的Java和C#的实现方法
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/13303995.html
Copyright © 2011-2022 走看看