面向对象的概念:
面向对象 (Object-Oriented Programming, OOP ) 是将现实问题构建关系,然后抽象成 类 ( class ),给类定义属性和方法后,再将类实例化成 实例 ( instance ) ,通过访问实例的属性和调用方法来进行使用。
面向对象编程的本质就是:
以类的方式组织代码,以对象的组织(封装)数据。
类与对象的关系
类是模板,没有类就没有对象。
对象是依据类而产生的一个个的个体,对象的属性的值的改变引起对象的改变,但是影响不到类(生物界除外)。
类是抽象的,要用必须实例化。类实例化后会返回一个自己的对象!
Student xiaoming=new Student;
xiaomingt对象就是一个Student类的具体实例!
方法定义
修饰符 返回值类型 方法名(){
//方法体;
return 返回值;
}
方法的调用
类名.方法名
构造器
一个类即使什么都不写,他也会存在一个方法 显示的定义构造器
实例化初始值
-
使用new关键字,本质是在调用构造器
-
用来初始化值
有参构造:一旦定义了有参构造,无参就必须显示定义
构造器
public 类名(){}
特点
-
和类名相同
-
没有返回值
作用
-
new本质在调用构造方法
-
初始化对象的值
注意点
-
定义有参构造以后,如果想使用无参构造,显示的定义一个无参的构造
this. 表示当前的类
this.变量名=参数名;
面向对象的三大特征
封装
目的---为了更好的保护数据。(数据安全)
关键字:private
功能:按照访问修饰符的的规则进行访问。在类的外部不能直接访问类的封装的属性和方法。(封装的是属性)
访问修饰符 class 类名{
Private 数据类型 变量名;
访问器方法setter getter
Private void 方法名(){};
}
继承
目的-----代码复用及类的功能的扩展。
关键字: extends
继承定义:一个类继承了另外一个类,被继承类称为父类(基类),继承的类称为 子类(派生类)。
*继承类语法:*
抽象类
public abstract class 类名{
和普通类相同;
抽象方法:
public abstract 返回值类型(void)方法名();
}
public class 子类名 extends 父类名{
继承的方法public void 方法名();
}
重写:需要有继承关系,子类重写父类的方法!
-
方法名必须相同
-
参数列表必须相同
-
修饰符:范围可以扩大但不能缩小; public>Protected>Default>ptivate
-
抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException-->Exception 大
重写:子类的方法和父类必要一致,方法体不同;
为什么需要重写:
父类的功能,子类不一定需要,或者不一定满足!
多态
目的----可以提高代码的扩展性
关键字:继承的extends 或 接口的instanceof
接口语法:
public interface 接口名{
常量;
public void 方法名();
}
实现接口的语法:
public class 类名 implments 接口名{
实现接口中所有的抽象方法。
}
多态注意事项:
-
多态是方法的多态,属性没有多态
-
父类和子类,有联系,类型转换异常!ClassCastExeption!
-
存在条件:继承关系,方法需要重写,父类引用指向子类对象!Father f1=new Son();
1.向上转型:
当子类的对象赋值给一个父类的引用时,便是向上转型,多态本身就是向上转型的过程
使用格式:父类类型 变量名= new 子类类型();
2.向下转型:
一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类的引用转换为子类引用,这个过程是向下转型。直接创建父类对象的无法使用向下转型;
使用格式:
子类类型 变量名= (子类类型) 父类类型的变量;