面向对象的思想:物以类聚,分类的思维方式 ,思考问题先把问题进行分类,对这些分类进行单独思考,然后再对某个分类下的细节进行面向过程的探索.
面向过程的思想:步骤清晰简单,第一步做什么,第二步做什么,适合处理一些较为简单的问题.
对于描述复杂的事物,为了从宏观上把我,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统.但是,对于具体到细微的操作,仍需要使用面向过程的思路去处理.
编程语言的几个发展阶段:
1.面向机器语言:每种型号的计算机都有自己独特的机器指令.
用机器语言进行程序设计是一项累人的工作,代码难以阅读和理解,一个简单的任务往往需要编写大量的代码,而且同样的任务,需要针对不同型号的计算机分别编写指令.
2.面向过程语言:如C语言.面向过程语言把代码组成称作过程或函数的块,每个块的目标是完成某个任务.例如,一个C语言的源程序就是由若干书写形式互相独立的函数组成的 .过程语言的语法更接近人们的自然语言,人们只需要按照自己的意图来编写各个函数.
3.面向对象语言:与面向过程语言相比,面向对象语言为程序执行的行为指定了一个对象,并且以对象为核心,一切围绕着对象,大概就是在完成某个任务时,首先要想到谁去完成任务,即哪个对象去完成任务,提到数据,就要想到这个数据是哪个对象的.
本质:以类的方式组织代码,以对象的组织(封装)数据.
面向对象编程的三个特性:
抽象 : 将具体实例中抽取出共同的性质形成一般的概念.
1.封装性:一个对象将自己的数据和对这些数据的操作合理,有效地封装在一起.将类隐藏在内部,只能通过该类提供的方法来实现对隐藏信息的操作和访问.可以提高程序的安全性,隐藏代码的实现细节.
高内聚,低耦合:高内聚就是类的内部数据操作细节自己完成,不允许外部干涉,低耦合:仅暴露少量的方法给外部使用.
通过 get set 方法调用private 先set 后 get set括号里面是无参, get括号里面要有对应属性.
2.继承:子类继承父类的属性和行为,,即继承父类所具有的数据和数据上的操作,同时又可以增添子类独有的数据和数据上的操作.如果父类是private则需要通过 get set方法获取,并且如果子类重写父类的方法要调用原先的方法得用super关键字去调用.子类重写父类方法后调用的是子类重写后的方法.
用extends 子类在前 父类在后,Java中只能单继承,没有多继承.
object为最大的类,最高级.默认继承.
3多态:
方法的定义与调用
-
修饰符 返回值类型 方法名 (参数){方法体 return ; }
-
main方法,一个类里面只能有一个main方法.语句为: public static void main(String [ ] args ){} 为程序执行的入口.同时成为main主方法. void 默认返回值即return为空,这时候用return一般是为了结束方法.
-
修饰符 public 为公开类型可以直接访问, private为私有类型,得通过get set 方法来进行访问.
-
静态方法 有 static 关键字 ,非静态方法没有 static 关键字.
-
静态方法可以通过 类名.方法名() 进行调用,注意后面有个括号.
-
非静态方法要用new 实例化这个类之后在进行调用.
-
对象类型 对象名 = 对象值.
-
Student student = new Student();
-
student.say();
-
5.值传递和引用传递.
类与对象的关系
-
类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物.
-
对象就是抽象概念的具体实例.
-
构造器,也称构造方法,分为有参构造和无参构造.
-
构造器的特点: 1.方法名必须和类的名字相同; 2必须没有返回类型,同时也不能写void 因为void默认返回值,
-
使用new 关键字 的本质就是在调用构造器,构造器也可以用来初始化值.
-
定义有参构造之后默认的无参构造会被覆盖掉,如果这时候想实例化无参构造必须显示的去定义一个无参构造.
-
快捷键使用构造器:Alt + Insert.
创建对象内存分析
new 一个 dog 和 cat 实例化对象.
小结:
-
类是一个模板:抽象,对象是一个具体的实例.
-
方法 定义 和 调用要熟悉.非静态方法记得实例化后调用.
-
引用: 引用类型和八个基本数据类型. 对象是通过引用来操作的: 栈---->堆
-
修饰符 属性类型 属性名 = 属性值!
-
对象的创建必须用new 关键字创造,构造器, Student student = new Student();
-
对象的属性调用: student.name;
-
对象的方法调用: student.add();
-
类:静态的属性称为属性, 动态的行为称为方法.
super 和 this 的区别
super注意点:
-
super必须调用父类的构造方法,必须在构造方法的第一个.
-
super必须只能在子类的方法或者构造方法中!
-
super 和 this 不能同时调用构造方法.
-
区别:
-
代表对象不同: this标识本身调用这个对象.
-
super 代表父类对象的应用.
-
前提: this 没有继承也可以使用. super 只有在继承条件中才可以使用.
-
构造方法: this();本类的构造 super();
重写
需要有继承关系,子类重写父类的方法!
1.方法名必须相同.
2.参数列表必须相同.
3.修饰符范围可以扩大但不能缩小. public >protected>default>private
4.抛出的异常范围可以被缩小但不能VB诶扩大;
重写,子类的方法和父类必要一致,方法体不同.
重写是因为父类的功能子类不一定需要或者满足所需功能.
注解:@override 编译时检查.
多态
1.多态存在的条件:
(多态是方法的多态,属性没有多态性.)
-
有继承关系
-
子类重写父类的方法
-
父类引用指向子类对象.
-
new一个对象使它为父类时不能调用子类独有的方法,得强制转换其为子类才可调用.
3.注意事项: 父类和子类,有联系. 类型转换异常: ClassCastException !
并且父类转换为子类是向下转型,需要强制转换,如: ((Studetn) obj).go();
代码块
1.静态代码块 最先执行且只执行一次.
2.匿名代码块其次且每运行一次方法会执行一次,可以用来赋初值.
3.构造方法最后执行.
抽象类
-
abstract,抽象方法,只有方法名字,没有方法的实现!
-
不能new这个抽象类,只能靠子类去实现它,约束!
-
抽象类中可以写普通方法,但抽象方法只能写在抽象类中.
-
抽象类的所有方法继承了它的子类,都必须要实现它的方法.
接口
-
声明接口的关键字是tnterface,接口的本质是契约.
-
接口中所有的定义其实都是抽象类的.
-
接口都需要有实现类,实现了接口的类,就需要重写接口中的方法.
-
implement 可以实现多个接口,也就是多继承.
-
常量 public static final.
-
接口不能被实例化,接口中没有构造方法.
异常
1.try是监测是否有异常.
2.catch是捕捉异常,并且输出语句.
3.finally是最终执行语句,可以用来关掉键盘输入以及后面 IO 资源等需要关闭的东西.
4.e.printStackTrace ( );异常信息在程序中错误出现的位置以及原因.
5.异常处理可以使用trycatch或者在上面直接抛出异常也可以.
浙公网安备 33010602011771号