Week02 面向对象
一、对象的创建
**1.是什么:**是对类的一种实例化的方法
**2.为什么:**因为我们想要一个具体的事物,而不是一个大概的物体,如果不进行对象的创建,事物就会变得模糊,比如我要读一本书,有人读的是哈姆雷特,有人读的是悲惨世界,所以我们需要一个精确的东西来具体化。
3.怎么创建对象
类名 对象名 = new 类名();
Student s1 = new Student();
创建对象的过程
1.new 完之后会在内存开辟空间,创建对象,传入地址
2.对象内部的属性和方法会初始化
3.完成创建后把地址值赋值给对象名
二、局部、成员变量
1.是什么
局部变量:方法体内,需要赋初值,离开方法体就没法用
成员变量:类中,不用赋初值,系统会自动的赋初值,可以在整个类中使用
2.为什么
成员变量是在整个类中进行实例化中都需要的属性,而局部变量则是,只在那个特定的方法中需要的属性
3.怎么做
在类中定义就是成员,在类中的方法中定义就是局部
三、构造方法
有参,无参(默认有个无参)
作用:创建对象,给对象的属性赋初始值
1.是什么
构造方法是一种与类名一致的特殊方法,没有返回值,可以有多个参数
2.为什么
构造方法的作用就是创建对象,(应该是一种约束把)
3.怎么做
范围 对象名(属性1,属性2…){}
四、重载(overload)
条件:
1.方法在同一个类中
2.方法名相同,参数列表不同 (个数,顺序)
3.返回值,方法范围要一致
1.是什么
对类中的方法进行重写
2.为什么
为了方便,对于同一个功能可能有不同的需求,比如加法运算,可以是一个参数,两个参数…
3.怎么做
3.怎么做
五、封装
**是什么:**对属性进行私有化
**为什么:**防止别人进行一些非法操作
**怎么做:**私有化属性,然后提供get,set方法对属性的操作进行规定
关键字:private
需要提供get和set方法用来对对象中的属性赋值,或者提供有参构造进行赋值。
六、继承
是什么:
子类继承父类的属性和方法,还可以有自己的扩展
为什么:
可以提高代码复用,提高效率。
怎么做:
class a extends b{}
注意:
1.继承后子类可以使用父类的属性和方法
2.单继承
3.子类可以使用父类中非私有的方法,父类不可以使用子类中特有的方法
4.子类构造方法执行会先调用父类的构造方法super()
七、重写(override)
是什么
在继承关系中,子类对父类的方法进行重写
要求:方法名相同,参数列表相同,修饰符范围子类要大于等于父类
为什么
父类中的方法不适合子类对象的使用
怎么做
略
八、多态
是什么:
同一个接口,使用不同的实例,然后得出不同的结果
为什么
减少冗余代码
怎么用
1.有继承关系
2.子类重写父类的方法
3.父亲引用指向子类对象,向上转型
九、抽象
是什么
抽象也是一种类,里面可以有抽象的方法,不定义方法体,只写方法名,被继承后调用
为什么
程序初期会出现一些不知道具体方法的方法体,所以不用给该方法写方法体
怎么用
子类继承父类,并重写父类所有的抽象方法,然后才能被调用
注意:一个子类只能继承一个父类,抽象类也能继承抽象类
可以有构造方法,不能通过构造方法实例化对象,但可以使用构造方法里面的内容
十、接口
与抽象相似,不过可以多继承,
其属性默认被 public static final修饰,是常量
其方法默认被 public abstract 修饰,接口不能有构造方法
接口之间也能实现
十一、常用类
1.object
所有子类的父类
几个方法:
equals
hashCode
toString
2.包装类
jdk5之前
//基本--->包装类
包装类 变量名 = new 包装类(值);
Integer i1 = new Integer(1);
包装类 变量名 = 包装类.valueOf(值);
Integer i1 = Integer.valueOf(1);
//包装---->基本
基本类 变量名 = 包装类对象.intValue();
int i = i1.intValue();
jdk5以后自动拆箱装箱
Integer i = 1;
int i = integer;