1.什么是面向对象
面向对象程序设计(object oriented programming简称OOP)
对象是一个由信息(变量)及对信息进行处理(方法)的描述所组成的整体,是对现实世界的抽象
其本质是对现实事物的特征和变化规律建立的模型
现实世界里我们所面对的事物都是对象,如具体存在的电脑,桌子等
而从具体对象中抽取出来的类型概念就是类。
面向对象三大特征:
封装:把自己的数据和方法只让可信的类或对象操作,对不可信的进行信息隐藏
继承:让某个类型的对象获得另一个类型的对象的属性的方法
多态:一个类实例的相同方法在不同情形有不同表现形式
2.java与面向对象
java面向对象是基于类去生成对象。
public class Student{
String name;
string sex;
int age;
}
//创建对象使用
Student stu = new Student( );
定义类使用class关键字,如上边代码,定义了一个叫Student的类
类中可以有属性︰成员变量,
类中可以有方法:表示该类所生成对象的行为
java是基于类生成对象的,也就是说,必须要先定义类,才能生成对象。比如上边的代码基于Student类生成stu对象。
3、构造方法Constructor
构造方法〈又叫构造器)是一种特殊的方法,它的作用是在创建对象的时侯,完成对象成员变量的初始化。
特点:
1)方法名与类名一致
2)没有返回值也没有void
3)通过new关键字调用
4)当一个类没有显式的声明构造方法时, java会默认创建一个无参构造方法
5)构造方法可以重载
6)当显示的声明了有参构造方法时,java就不会再默认创建无参构造方法了(我们可以自己再把无参构造方法显示的声明一遍)
4、面向对象三要素
1、封装
细节(变量和方法〉隐藏,成员变量设置为私有(private),然后提供set和get方法来写和读。通俗的讲,封装就是不允许直接访问成员变量,必须通过set和get方法来访问;
优点︰安全,便于重构
1)良好的封装能够减少耦合。
2)类内部的结构可以自由修改。
3)可以对成员变量进行更精确的控制。
4)隐藏信息,实现细节。
1.1 this关键字
this关键字,表示当前类的对象
一般只有在方法中,成员变量名和局部变量名重名的时候,用this来指定成员变量,参考上面示例的setAge方法。
1.2访问控制修饰符
访问控制修饰符,用来控制访问权限,一共有四个
2、继承
通过关键字extends来声明子类与父类的继承关系,子类extends 父类
public class Student extends Person{
}
特点∶
1)所有类都有父类:Object类,即所有类都派生于Object类
2)只能单亲继承(单继承),即每一个子类只能有一个父类
3)子类只能继承父类的非private修饰的变量和方法
子类不能继承父类的私有属性,
如果子类中公有的方法影响到了父类私有属性,那么私有属性是能够被子类使用的(即通过父类的公有方法访问到父类的私有变量)
4)子类可以直接使用继承的变量和方法,不需要再在子类中声明或写出
2.1super关键字
表示当前类的父类对象,可以使用super关键字实现对父类变量和方法的访问
注意∶在子类的构造方法中,无论写不写super(),java都会默认使用super()调用父类的构造方法,super()是父类的无参构造方法,而且这行代码默认在子类构造方法的第一行
想要构造子类,先构造父类。
一旦想使用带参的构造方法,先把无参的构造方法写上,防止报错
示例:
public class Kid extends Parent{
public Kid( ) {//无参构造方法
super( );//调用父类构造方法是在构造方法中的第一行代码
class B extends A{
B(int i){
super(i);//相应的父类的构造方法也要带参
System.out.println("B constructor");
}
}
2.2重写
子类继承了父类的方法,对父类的方法中的执行代码进行修改以满足子类业务的需要,这就是重写。特点∶
1)重写发生在子父类当中
2)方法名、参数列表、返回值类型均相同
3)重写的方法,方法体不同或者访问控制修饰符不同
4)子类方法的访问权限不能缩小
5)静态方法 (static)不能进行重写(因为静态资源只加载一次)
2.3重写与重载的区别
3、多态
没有继承就没有多态,生成的对象,在调用父类方法时,如果方法被子类重写,则调用的是子类重写的方法。
代码当中体现多态性.其实就是一句话:父类引用指向子类对象
格式:父类对象名= new子类);
父类:Person
子类:Student extends Person
创建对象:Person p2 = new Student();
p2.父类中的方法
子类的对象可以复制给父类对象。