zoukankan      html  css  js  c++  java
  • 第四课:面向对象(基础) M

    1、面向对象概念

      面向对象是一个比较先进的设计思路,在这之前有一种开发设计,称为面向过程,两者之间的区别为:

        面向过程:专注于解决问题

        面向对象:经过完整的分析、设计之后才可以进行开发

      面向对象的程序开发实际上分为三种:OOA、OOD、OOP

        OOA:面向对象分析

        OOD:面向对象设计

        OOP:面向对象程序

    2、面向对象的三大特征

      封装性:对外部不可见,保护类中的操作不被外部直接访问

      继承性:扩展类的功能。

      多态性:方法的重载,不同的方法名称根据传入的参数类型或个数不同调用的方法也不同。多态是在整个Java中最重要的概念,而且一个好的面向对象设计中肯定要大量的使用多态性

    3、类与对象

      类和对象是面向对象中两个最重要的概念:

        类:表示一个共性的产物,是对某一类实物的描述,是抽象的、概念上的定义。

        对象:就是一个个性的体现,是实际存在的该类实物的每个个体,因而也称为实例(instasnce)。

      实际上,类就相当于是一个对象的操作图纸,按照此图纸生产出来的对象,才可以被用户所使用:

        没有类则肯定没有对象的产生

        没有对象的产生类不能使用

        对象的所有活动范围在类中已经完整的定义出来了

    4、类与对象的定义

      (1)、类要使用class来进行定义,类由属性和方法组成,类的定义格式为:

        class 类名称{

          数据类型 属性 ;  //声明成员变量(属性)

          public 返回值的数据类型 方法名称 ( 参数1, 参数2...) {  //定义方法的内容

            程序语句 ;

            [return表达式 ;]

          }

        };

      属性跟标量一样,数据类型就是使用Java的两种数据类型:基本数据类型、引用数据类型。

      但是,此时在方法的定义上与直接使用主方法调用的时候声明不一致的是,不再出现static关键字。

      (2)、对象的创建及使用的两种方式:

        类名 对象名称 = null ;  //声明对象

        对象名称 = new 类名() ;  //实例化对象

        或者:

        类名 对象名称 = new 类名() ;  //产生实例化对象

      (3)、对象的操作分为两种情况:

        访问属性:对象名称.属性名 = 值 ;

        访问方法:对象名称.方法() ;

      (4)、对象的产生

        对象的产生步骤实际上是分为两步完成的:

          声明对象:类名称 对象名称 = null ;

          实例化对象:对象名称 = new 类名称() ;

        如果对象在使用中只是声明的话,则无法使用,会出现下面的错误必须实例化之后才可以正确使用:

        Exception in thread "main" java.lang.NullPointerException

        出现上面错误的原因:是由于对象未被实例化,所以出现的空指向异常,此异常在开发中会经常出现。

        实际上对于对象的产生,也是与数组一样,需要划分堆栈空间的:

          对象实际上是保存在栈内存中的:Person per = null ;

          实例化之后对象会开辟对应的堆内存空间:per = new Person() ;

            在堆内存中实际上存放的是对象的各个属性,因为对象中只能依靠属性的不同来区分。

            全部的方法保存在全局代码区中,这是一个其他的存储空间,这个方法被所有的对象所共同拥有。

         

    声明几个对象,就会在栈内存中开辟几个空间来保存对象,然后分别实例化对象,也就是说,只要一出现关键字new就表好似要开辟新的内存空间。而且这些对象之间不会互相影响。

    5、对象的引用传递

      在对象的操作中实际上是存在引用传递的,所谓的引用传递,就是将一个堆内存空间的使用权交给了其他的对象,就相当于为一个堆内存空间起了一个别名。

    class Person{
    	String name ;
    	int age ;
    	public void tell(){
    		System.out.println("姓名:" + name + ",年龄:" + age) ;
    	}
    }
    public class SimpleDemo{
    	public static void main(String args[]){
    		Person per1 = null ;	//声明对象per1
    		Person per2 = null ;	//声明对象per2
    		per1 = new Person() ;	//实例化对象per1
    		per2 = per1 ;	     //引用传递
    		per1.name = "张三" ;	//为对象属性赋值
    		per1.age = 30 ;
    		per2.age = 33 ;
    		per1.tell() ;
    		per2.tell() ;
    	}
    }
    

      一个栈内存只能引用一个堆内存空间,但是一个堆内存空间可以被多个栈内存同时指向。在Java中不用的内存空间成为垃圾空间,垃圾空间要等待垃圾收集机制进行空间释放,垃圾收集机制成为GC

    【2011-12-27】

  • 相关阅读:
    Flutter form 的表单 input
    FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮
    Flutter 中的常见的按钮组件 以及自 定义按钮组件
    Drawer 侧边栏、以及侧边栏内 容布局
    AppBar 自定义顶部导航按钮 图标、颜色 以及 TabBar 定义顶部 Tab 切换 通过TabController 定义TabBar
    清空路由 路由替换 返回到根路由
    应对ubuntu linux图形界面卡住的方法
    [转] 一块赚零花钱
    [转]在树莓派上搭建LAMP服务
    ssh保持连接
  • 原文地址:https://www.cnblogs.com/chuanstone/p/2303827.html
Copyright © 2011-2022 走看看