概述
前几篇已经把Java的入门必备的基础知识一 一列,举掌握了前面的知识后就可以进阶下一个阶段Java的面向对象编程
我们先来了解下什么是面向对象?它是什么东西?能干什么?有什么特性?好处是什么?接下来我们一起来揭开java面向对象的面纱.
什么是面向对象
学java的都知道一句话---"万物皆为对象"
万物好比现实世界的一切物品,我们可以把具体的每个物品看作为一个独立且特有的对象.
我们在编程中就是把现实中的实现出来即现实能解决的通过程序也能解决!
例如:鱼、小狗、飞机等,这些都可以看作为一个个对象,而在程序中也可以看作为对象。每个对象都具有各自的特征---即程序中的属性;及行为---即程序中的方法,java就是通过对象之间行为的交互来解决问题的。
对象是类的一个实例有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类是一个模板,它描述一类对象的行为和状态,对象是类的一个实例。
面向对象好处之一就是解决代码的复用性
高质量的代码具备:
复用性好、扩展性好、维护性好、可移植性好、健壮性好、可读性好、效率好......
类具有三个特性:封装、继承和多态。
面向对象编程分为以下三种:OOA、OOD、OOP
OOA:面向对象分析
OOD:面向对象设计
OOP:面向对象编程
类与对象
1-类:是一种引用数据类型
- 现实生活是由很多很多对象组成的,基于对象抽出了类
- 类:类型/类别,代表一类个体
- 类是对象的模板/模子,对象是类的具体的实例
- 类中可以包含:
- 对象的属性/特征/数据-----------------成员变量
- 对象的行为/动作/功能-----------------方法
- 一个类可以创建多个对象
// 引用
//数据类型 引用类型变量 指向 对象
Student zs = new Student();
2-对象:
软件中真实存在的单个的个体/东西
new对象时会给所有成员变量赋默认值,
每创建一个new对象都会产生一个新的对象空间属性默认值
Student student = new Student();
//给成员变量赋值
student.name="jis";
new Student.name="kdsjf";//这里将产生一个新的对象,已经不是student的对象了.
3-如何创建类?如何创建对象?如何访问成员?
1-创建学生类
public class Student {
}
2-创建学生类的对象
public class StudentTest {
public static void main(String[] args) {
//创建一个学生对象
Student zs = new Student();
}
}
面向对象的行为方法
方法:
- 作用:封装一段特定的业务逻辑功能
- 方法应尽可能独立,一个方法只干一件事
- 方法可以被反复多次调用
- 减少代码重复,有利于代码维护
- 何时用:假设有一个功能,在很多地方都得使用,就将功能封装到一个方法中
方法的定义:五要素
方法的签名:方法名+参数列表
修饰词 返回值类型 方法名(参数列表) {
方法体
}
无参---无返回值
public static void say(){
System.out.println("大家好,我叫WKJ,今年38岁了");
}
无参---有返回值
public static double getNum(){
//有返回值的方法中,必须有return
//并且return后数据的类型还必须与返回值类型匹配
//return "abc"; //编译错误,返回值类型不匹配
return 8.88; //1)结束方法的执行 2)返回结果给调用方
}
有参---无返回值
public static void sayHi(String name){ //形参
System.out.println("大家好,我叫"+name+",今年38岁了");
}
有参---有返回值
public static int plus(int num1,int num2){
int num = num1+num2;
return num; //返回的是num里面的那个数
//return num1+num2; //返回的是num1与num2的和
}
方法的调用:
形参:形式参数----定义方法时的参数叫做形参
实参:实际参数----调用方法时的参数叫做实参
方法重载与重写参数列表的注意事项(这个后面在详细说)
class Aoo{
void show(){} //方法名一样,参数列表不一样,以下是方法重载
//int show(){ return 1; } //编译错误,重载与返回值类型无关
void show(String name){}
//void show(String address){} //编译错误,重载与参数名称无关
void show(int age){}
void show(String name,int age){}
void show(int age,String name){}
//int show(){ return 1; } //编译错误,重载与返回值类型无关
//void show(String address){} //编译错误,重载与参数名称无关
}
- 无返回值:方法名(有参传参);
public class MethodDemo {
public static void main(String[] args) {
say(); //调用say()方法
//sayHi(); //编译错误,有参则必须传参
//sayHi(250); //编译错误,参数类型必须匹配
sayHi("zhangsan"); //实参
sayHello("zhangsan",25); //实参
sayHello("lisi",24); //实参
}
//方法
public void say(){};//方法体为空
public void sayHi(String name){};
public void sayHello(String name,int age){};
}
- 有返回值:数据类型与方法的返回值类型一致;
/方法的演示
public class MethodDemo {
public static void main(String[] args) {
double a = getNum(); //getNum()的值就是return后的那个数
System.out.println(a); //8.88,模拟对返回值的后续操作
int b = plus(5,6); //plus(5,6)的值就是return后的那个数
System.out.println(b); //11,模拟对返回值的后续操作
int[] d = testArray();
System.out.println(d.length); //10,模拟对返回值的后续操作
}
//方法
public static double getNum(){
return 8.88;
}
public static int plus(int a,int b){
return a+b;
}
public static int[] testArray(){
int[]arr=new int[10];
return arr;
}
}
return:作用
- return 值:有返回值
- 1)结束方法的执行
- 2)返回结果给调用方-------用在有返回值的方法中
- return;无返回值
- 1)结束方法的执行------------------------------------用在无返回值的方法中