Java基础班第二天--面向对象

本文详细介绍了面向过程与面向对象的区别,如何使程序面向对象化,以及Java语言的基本单位类的运用。讨论了局部变量与成员变量的区别,解释了匿名对象的使用,对象生命周期与初始化的区别,封装、继承、多态等面向对象特征的重要性。同时,阐述了如何通过成员变量和方法来描述现实世界的事物,以及如何避免重复存储相同数据的方法。
摘要由CSDN通过智能技术生成

1. 面向过程强调的是功能行为
    面向对象是将功能封装进对象,强调具备了功能的对象。面向对象是基于面向过程的


 完成需求时:
 先要去找具有所需的功能的对象来用
 如果该对象不存在,那么创建一个具有所需功能的对象
 这样简化开发并提高复用
 
2. 如何更好的让我们的程序是面向对象的呢?请参照如下步骤

1)分析存在哪些类(或者对象)  UML统一建模语言  名词提取法
2)分析每个类可以做什么
3)分析类与类之间的关系

 

3. 我们学习的编程语言,都是为了把现实世界的事物给描述出来
   通过编程语言来模拟现实世界的操作
   现实世界的事物:外在的属性描述和内在的功能、行为
   注意:只有当变量是类的外在特征的时候,才可以定义为成员变量
   而且如果多个范围都适合定义变量(如矩形的长,宽,周长,面积)
   建议定义小范围的成员变量
  
   开发的过程,其实就是不断的创建对象,使用对象,指挥对象做事情
   设计的过程,其实就是在管理和维护对象之间的关系
  
   面向对象的特征:封装(encapsulation) 继承(inheritance) 多态(polymorphism)
  
4. java语言的最基本的单位是类。我们应该用一个类来描述现实世界的一个事物
   把事物用类体现出来 类:成员变量(字段、属性)和成员方法(函数)
  
5. 局部变量和成员变量的区别


1)在类中的位置区别  

      局部变量:方法中 

      成员变量:在类中,方法外


2)在内存中的区别   

      局部变量:在栈中 

      成员变量:在堆中


3)生命周期的区别  

      局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
      成员变量:随着对象的创建而存在,随着对象的消失而消失


4)初始化值的区别  

      局部变量:没有初始化值,使用前必须先声明,再赋值
      成员变量:都有默认初始值
  
6. 匿名对象
用法

 1)当对对象的方法仅进行一次调用的时候 new Demo().show();
     //匿名对象使用完毕后,就是垃圾了;因此比较节省内存空间
 2)匿名对象可以作为实际参数(引用参数)进行传递
 
7. 一个方法中的变量,首先在局部位置找,如果没有再在成员位置找,如果再没有,就报错

8. 给age赋值了一个负数,这是有问题的
   用if语句,在所提供的类中进行判断,考虑可以使用成员方法进行
  
9. 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
   把属性都隐藏,提供公共方法对其访问,提高数据安全性
  
10. 访问修饰符 public  private  默认的(default)

11. 写一个类的时候,把所有的成员变量用private修饰,并提供对应的getXxx()和setXxx()方法

12. 构造方法 建议无参数构造方法永远自己给出

13. this代表其所在函数所属对象的引用(this代表本类对象的引用)
 this应用场景
 1)用于解决局部变量隐藏成员变量
 2)通过this调用本类的其他构造方法(如一个带两个参数的构造方法调用带一个参数的构造方法)
    this(name)相当于类名.name 这个就要调用前面1个参数的构造函数this.name = name
    对this的调用还要是构造器中的第一个语句

14. 这种写法是基本要求 JavaBean
   
成员变量私有; 无参数构造方法;  公共的get/set方法

15. 我们的每一个对象都有一个国家的成员变量,而且值都是中国。那么在堆内存中就要把“中国”存储很多次。
    浪费了空间  针对这种情况,使用static关键字 可以修饰成员变量,也可以修饰成员方法
 静态的使用场景:某个成员是被所有对象共享的时候,该成员就可以被静态修饰
 
16. 静态成员具备以下特点
 1)随着类的加载而加载
 2)优先于对象存在
 3)被所有对象所共享
 4)可以直接被类名调用
 
17. 静态方法只能访问静态变量(因为静态对象是随着类的加载而加载的,并没有对象,没有this的概念)
 先进内存的不能访问后进内存的
 非静态方法可以访问静态变量,也可访问非静态变量
 静态(变量和方法)只能访问静态(变量和方法)非静态都可以访问

18. 主方法是静态的:public static void main(String[] args)
  public: main是被jvm调用的,所以,它的方法权限必须足够大
  static: main是被jvm调用的,为了方便,不创建对象,直接通过类名调用
  void:空的意思,因为我们把结果返回给jvm是没有意义的
  main: 习惯写法,是程序的入口
  String[] args: 这是一个字符串数组。在早期是为了接受键盘录入数据的
  在使用java命令的时候,在后面给出值就可以了
  然后main就能把这些值组装起来存储到字符串数组中 现在不用了,我们用Scanner类

19. 制作帮助文档
 1)帮助我们知道别人提供给我们的class里面到底有什么
 2)我们不会把.java文件给用户,而是会把.class文件给用户,这个时候,就要制作帮助文件
 A: 把你写的类加入文档注释
 B: 用javadoc工具进行解析即可 javadoc -d doc -version -author ArrayTools.java
 
20. 学习和使用API(应用程序编程接口)的步骤
 JDK6的中文帮助文件 在查看时,要注意类及方法出现的版本
 1)了解API是什么?Application Programming Interface(JDK提供给我们的说明书)
 2)看到一个关于Math类的描述信息 
       首先看包 如果是java.lang包下的类是可以直接使用的
       如果是其他包下的类是必须要导入包的
 3)简单的看一下描述 之后应该找构造方法
 4)没有构造方法的情况:
       第一种:通过一个静态方法返回该类的对象
       第二种:它的成员变量和成员方法都是静态的
   
21. Math类

   //得到1到100的随机数
   int i = (int)(Math.random()*100+1);
   System.out.println(i);   


 Math类要掌握的内容:
  成员变量: 自然对数 public static final double E
          圆周率 public static final double PI
  成员方法: 随机数: public static double random()
          绝对值: public static int abs(int a)
          向上取整: public static double ceil(double a)
          向下取整: public static double floor(double a)
          最大值: public static int max(int a, int b)
          最小值: public static int min(int a, int b)
          求次幂: public static double pow(double a, double b)
          四舍五入: public static int round(double a)
          //四舍五入基本原理 -->int result = (int)(num+0.5/1); 加上0.5
          正平方根: public static double sqrt(double a)
     
22. 代码块:用{}括起来的代码  
 局部代码块:在方法中用{}括起来的代码 作用是限定变量的生命周期,及时释放内存
 构造代码块:在成员位置用{}括起来的 在每个构造方法执行前执行 作用是把多个构造方法中相同的代码抽取出来
 静态代码块:在成员位置用{}括起来的,被static修饰的 随着类的加载而加载  对类中的数据进行一次初始化
 三个代码块的执行顺序  静态代码块 > 构造代码块 > 局部代码块
 一般来说 是不会使用代码块的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值