面向对象编程
java的核心思想oop面向对象编程
面像过程
面像对象 物以类聚 分类的思维模式 思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考 最后 才对某个分类下的细节进行面像过程的思索。
面像对象适合处理复杂的问题 适合处理多人协作的问题!
对于描述复杂的事务,为了从宏观上把握,从整体上合理分析,我们需要使用面像对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面像过程的思路去处理。
student M
什么是面像对象
面像对象编程
面像对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
三大特性
封装:把数据包装起来;
继承:儿子继承
多态:学习() ,同一种事务有多种不同的形态。
从认识论角度考虑是先有对象后有类。对象,是具体的事务。类,是抽象的,是对对象的抽象
从代码运行角度考虑是先有类后有对象。类是对象的模板。
设计--->person
---->人人人
回顾方法及加深
oop
demo01
//方法
public static void main(String[] args){
}
/*
修饰符 返回值类型 方法名(...){
//方法体
return 返回值;
}
*/
public String sayHello(){
return "hello,word";
}
public int max(int a,int b){
return a>b?a:b;//三元运算符
}
break和return的区别
break:跳出switch ;
return:结束方法,返回一个结果
方法名:注意规范就OK 见名知意
参数列表:(参数类型,参数名)...
异常抛出:
//ArrayIndexoutofBounds
public void readFile(String file) throws IOException{
}
方法的定义
修饰符
返回类型
break:跳出switch,结束循环和return的区别
方法名:注意规范就ok 见名知意
参数列表:(参数类型 参数名)
异常抛出:疑问,后面讲解
方法的调用 //递归
静态方法
非静态方法
形参和实参
值传递和引用传递
this关键字
//静态方法 staic
//非静态方法
Student.java //不同类
public class Student{
//方法
public static void say(){
sout("学生说话了!")
}
}
Demo02.java//不同类
public class Demo02{
Student.say();
}
//静态方法 类名.方法名
若是非静态方法
就不能在其他类中写 类名.方法名直接调用
//就要实例化
new Student().say();
Student student=new Student();
Student.say //非静态的方法
public void a(){
b();
};
public void b(){ //类实例化之后才存在
a();
}
//和类一起加载
//对象实例化 实例化之后才存在
public static void a(){
}
所以当静态方法和类一起载入时
另一个方法并没有载入 故不能调用另一个非静态方法。
public int add(int a,int b){
return a+b;
}
如果是静态方法
就 类名.方法名直接调用
public static int add(int a,int b){
return a+b;
}
public int add(int a,int b){
return a+b;
}
//实际参数和形式参数的类型
demo04.java
public class Demo04{
public static void main(String[] args){
int a=1;
Sout(a);//1
Demo04.change(a);
System.out.println(a);//1 java是值传递
}
//返回值为空
public static void change(int a){
a=10;
}
//java是值传递}
引用传递
对象 本质还是值传递
//定义一个person类,有一个属性:name
class Person{
String name;
}
public static void change(Person person){
//person是一个对象 指向的是一个具体的人 可以改变的值
person.name="秦疆";
}
psvm{
Person person=new Person();
sout(person.name);//null
Demo05.change(person);
sout(person.name);//秦疆
}
类和对象的关系
类是一种抽象的数据类型,他是对某一类事务整体描述/定义,但是并不能代表某一个具体的事务。
动物 植物 手机 电脑
Person类 Pet类 Car类
对象是抽象概念的具体实例
张三就是一个人的具体实例 张三家里的旺财就是狗的一个具体实例
能够体现出特点 展现出功能的是具体的实例 而不是一个抽象的概念
创建与初始化对象
使用new关键字创建对象
使用new关键字创建的时候,除了分配内存空间外,还会给创建好的对象 进行默认的初始化 以及对类中构造器的调用
Demo02
Student
public class Student{
//属性:字段
String name;
int age;
//方法
public void study(){
sout(this.name+"在学习");
}
}
public class Application{
psvm{
//类是抽象的 需要实例化
new Student();
//类实例化后会返回一个自己的对象
Student student=new Student();
//同一个类肯定有共同特性
//进行默认的初始化
xiaoming.name="xiaoming";
sout(xiaoming.age);
}
}
Person --->身高 体重 年龄,国家
//学程序好的原因?对世界进行更好的建模!----宅!音乐 ,旅游