面向对象
面向过程:
着眼于整个程序的执行流程和功能的具体实现, 是一个执行者的身份
面向过程:
着眼于找到能够帮助自己完成此功能的人, 是一个领导者的身份, 更符合日常生活中人们处理事情的思想
类和对象
类:
类型, 一类事物, 是这类事物的基本信息和功能行为所组成的集合
基本信息 -> 属性
功能行为 -> 方法
例如:
研究鸟类型
属性: 品种, 毛色
方法: 飞, 吃
对象:
类的一个具体的实例, 获取对象需要创建对象 (实例化)
类和对象的关系:
类是一个抽象的概念, 对象是一个具体的概念
任何对象都具有所属类中所有的属性和方法
例如:
研究鸟对象
属性: 品种 - 鹦鹉, 毛色 - 绿色
方法: 飞 - 普通的飞, 吃 - 游客给的食物
自定义类型
格式:
public class 类名 {
属性
方法
}
讲究:
属性用名词
方法用动词
创建对象 (实例化)
创建格式:
数据类型 对象名 = new 数据类型 ();
调用属性:
对象名. 属性;
调用方法:
对象名. 方法 ();
注意:
对象中成员基本类型是默认赋值 0, 引用基本类型的默认值是 null 没有空间. 除非 new 空间或者指向别人的空间, 不然没有空间没有地址.
今天有点迷糊的, 我想用自定义的对象 Plane[] planes = new Plane[3]; 调用里面的方法. 是不行的, 它是动态创建, 必须用对象来往里面填充. 因为这是动态创建, 动态创建的引用类型的默认值是 null. 想要初始化, 要用户自己初始化. 数组只是容器.
即便是静态赋值你往大括号里面传入的也是对象:
比如: //String 类型中的就是 String 类型对象 String[] string = {"wert","asdf","eerr"}; Plane[] planes = {plane1,plane2}; // 静动态都要传入对象才能用, 不然默认值是 null 没有开辟空间的, 自然不能用的.
这样说吧, 数组就是容器, 你往里面存东西然后通过下标调用. 比如静态的你初始化就放入数据然后调用. 动态的, 你后来放入数据, 然后调用. 引用动态的, 你要后来放入数据, 这时候你放入的就是你自己定义的类型对象这才是赋值.
```
例:
- //3 虽然是对象, 但同时也是对象. 基本数据类型也是, 即使数字也是元素.
- Integer[] inte = new Integer[2];
- inte[0]=3;
- //str[0] 接受到的也是一个对象
- String[] str = new String[2];
- str[0]="hel";
- //plane 是对象不能当成基本类型使用, 并且如果没有装入对象的情况下是不能调用方法的. 但这个 plane 是可以调用数组方法的.
- Plane[] plane= new Plane[2];
- ```
向外传递引用类型不用返回, 因为引用类型是双向的, 是地址传递. 但是方法内想要获取外部的就要通过参数列表.
类中不用 public 修饰的成员是不能被跨包修改的.
直接打印对象时打印的是地址, 但是我不想打印地址, 我想打印里面的内容. 我们知道 Arrarys 里有 toString 方法, 它是重写了 Object(所有类的父类) 中的 toString. 所以我们的类也是继承自他的, 我们也重写 toString, 这样我直接打印对象的时候就不是打印地址而是 toString 的内容. 我不知道 toString 内部怎么做的但就是能做.
下面这一题由于表达式是从右往左 new 然后赋值, 又因为它的生命周期在 for 内, 所以每一次 for 循环都会创建一个 plane, 新的会覆盖老的.
for (int i =0;i<10;i++){ // 自定义飞机类 Plane plane = new Plane(); ...... }
来源: http://www.bubuko.com/infodetail-3204122.html