什么是面向对象编程
面向对象思想是人类最自然的一种思考方式,他将所有预处理的问题抽象为对象,同时了解这些对象具有哪一些对应 的属性以及行为,以解决这些对象面临的一些实际问题。
面向对象编程的特点
面向对象是相对面向过程而言
面向对象和面向过程都是一种思想
面向过程强调的是功能、行为
- 面向对象:
将功能封装进对象,强调具备了功能的对象
面向对象编程的本质
以类的方式组织代码,以对象方式的组织(封装)数据
面向对象编程的三大特性
1. 封装:
封装是面向对象编程的核心思想。也就是将对象的特征和行为封装起来,其载体就是类,类通 常会隐藏其实现细 节,这就是封装的思想。也就是说现实生活中的物品或商品你只要负责使用就ok,其他的你可以不管。例如:使用手机打电话,只要你打通电话就行,具体内部怎么实现无需知道。
**
2. 继承:
继承是每一门计算机语言不可少的机制,主要作用就是利用继承机制使新建的类可以建立在原有类的基础之上。在使用或者重写原有类的行为或者功能(程序里叫成员方法)以及访问原有类的特征(也就是类的成员变量)。我们可以称新类为子类,原有类为父类。举个例子:如果类A是类B的父类,而类B是类C的父类,那么也可称类C是类A的子类,类C是从类A基础而来。同时在java中,关于类的继承是单一继承的,也就是说,一个子类只能拥有一个父类,一个父类可以有多个子类。总而言之,继承是在代码中实现重复利用的重要手段,子类通过继承,复用父类特征和行为的同时又添加了子类特有的特征和行为。
3. 多态:
将父类对象应用于子类的特征就是多态。多态通俗理解就是多种形态,但每一个实体(对象)还是具备了父类的特征和行为。
方法的调用
在一个类里面写的代码,要想在另一个类中使用,有两种方法,一种是静态调用(static),一个是非静态调用
-
静态方法
在方法前加上static,再通过在另一个类的main()方法中类名.方法名() 举个例子: Student类
package com.OOP;
public class Student {
//方法
public static void say(){
System.out.println("123");
}
}
在demo2中调用
package com.OOP;
public class demo2 {
public static void main(String[] args) {
Student.say();//类名.方法名
}
}
- 非静态方法
Student类
package com.OOP;
public class Student {
//方法
public static void say(){
System.out.println("123");
}
}
在demo2中调用
package com.OOP;
public class demo2 {
public static void main(String[] args) {
//实例化这个类 用new
//对象类型 对象名=对象值
Student student=new Student();
student.say();
}
}
还需要记住一种情况:
用static 定义的a去调用非静态的b,是不可以调用的。因为static是和类一起加载的,而非静态定义的需要类实例化(new)后才能使用,所以就相当于用一个存在的去调用一个不存在的,是无法调用的。
public static void a(){
b();
}
public void b(){
}
类和对象的创建
使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
demo4类的创建:属性+方法
package com.OOP;
public class demo4 {
//demo4类:类的构建就是属性+方法
//属性:字段
String name;
int age;
//方法
public void study(){
System.out.println(this.name+"在学习");
}
}
调用demo4类,创建对象
package com.OOP;
public class demoi4 {
public static void main(String[] args) {
//类:抽象的、实例化
//类实例化后会返回自己的一个对象
//demo4的对象就是demo4类的一个具体化实例
demo4 xiaoming=new demo4();
demo4 xh=new demo4();
xiaoming.name="小明";
xiaoming.age=11;
xh.name="杨过";
xh.age=23;
System.out.println(xh.age);
}
}
构造器的构建(构造方法)
类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:
必须和类的名字相同
必须没有返回类型,也不能写void
无参构造
public class Person {
}
这种形式则默认为构建的构造器为
public class Person {
pblic Person(){
}
}
这就是无参构造,可以用来初始化。
-
他的作用是:
使用new关键字,本质是在调用构造器
用来初始化值
有参构造
我们在原来的类里创建两个方法
package com.OOP.构造器;
public class Person {
String name;
public Person(){
}
public Person(String name){
this.name=name;
}
}
我们在main方法中的对象中传递一个字符串
package com.OOP.构造器;
public class Application {
public static void main(String[] args) {
Person person=new Person("y");
System.out.println(person.name);
}
}
那么他会执行下面有参构造的构造器,因为可以自动识别有参。
oop:面向对象编程