面向对象编程(OOP)
注:面向对象在java学习中非常重要,一定要牢牢掌握,这会对以后的学习非常重要。
1.1 面向过程和面向对象的编程思想
A.面向过程的编程思想:
面向过程是以流程为单位实现的,注重功能的实现,代码之间的关联性和依赖性非常高。
B.面向对象的编程思想:
面向对象是建立在面向过程的基础之上,也就是说在面向对象的编程中一定会用到面向过程的编程思想,面向对象也能把任何一个事物看作是一个整体,从事物的特征(属性)和行为(方法、功能)两个方面进行描述。
C.面向对象的四大或者三大特征:
抽象、封装、继承和多态。
1.2 对象
A.什么是对象:
对象在我们每个人的生活中非常常见,比如说:一项法律,法规,政策和两个人之间对话时这两个人都是对象等。说白了就是万事万物皆对像。
对象还有一个特征:那就是不管两个事物有多么相似和相同,都不能称为同一种对象,而是两个永远不同的对象。
B.抽象
把同一类事物,它们之间的共同的特征(属性)和行为(方法)进行抽取、归纳和总结。
C.封装
封装简单来说就跟我们生活中包装一件东西一样,用来保护这件东西的安全。而封装则是用来保护我们数据的安全性。封装不是绝对的,如果需要访问封装起来的属性和方法,就必须通过指定的公共入口(方法、接口)。
1.3 类(Class)
A.在java中,类(class)就是用来存放抽象出来的方法和属性。
类的定义语法:
[访问修饰符] class 类名{
属性
方法
}
1.4 对象的创建
类是模板,可以通过类创建N个属于这个类的事物就是对象,基于这个类创建的对象,那么这个对象就拥有类中定义的所有属性和方法。类是对对象的抽象,对象是类的实例化。
A.格式和语法
格式:类名 对象名=new 类名();
语法:对象名.全局属性名、对象名.方法名(参数列表)
1.5 构造方法
A.构造方法:
方法名和类名相同。
没有void,也没有return。
方法不能被static修饰
类名 对象名=new 构造方法(参数列表);
B.语法:
[访问修饰符] 类名(参数){ }
C.构造方法的作用:
用来创建对象,并且对成员属性进行初始化。
1.6 构造方法的分类
A.构造方法分为:
有参数和无参数的构造方法。
B.无参数的构造方法分为:
隐式无参数的构造方法和显示无参数的构造方法。
C.有参数的构造方法:
在调用时,需要传递数据,而你想调用哪个方法必须要调用对应参数的个数和顺序。
示例:
public class Demo2{
public Demo2(){
System.out.println("------无参数的构造方法------");
}
public Demo2(String name,int age){
System.out.println("------有参数的构造方法----- 姓名name;"+name+", 年龄age;"+age);
}
public Demo2(int a,int b){
System.out.println("------有参数的构造方法----- a="+a+", b="+b);
}
public static void main(String[]args){
Demo2 demo2=new Demo2("法外狂徒",38);
}
}
1.7 方法
A.方法,就是完成同一功能的代码块。
定义语法:
[访问修饰符] 返回值类型 方法名(参数列表){
//返回值
return 返回值;
}
B.方法分类:
无返回值无参数的方法;
[访问修饰符] void 方法名(){
}
无返回值有参数的方法;
[访问修饰符] void 方法名(数据类型 参数1,数据类型 参数2,...){
}
有返回值无参数的方法;
[访问修饰符] 返回值类型 方法名(){
//代码
//返回值
return 值;
}
有返回值有参数的方法;
[访问修饰符] 返回值类型 方法名(参数列表){
//最后一句代码
return 返回值;
}
1.8 this关键字
A.this关键字只能在没有被static修饰的方法中。
当成员变量和局部变量的变量名一致时,因为方法是就近原则,所以想要访问成员变量就要加上this
格式
this.属性名;
当this以this(参数列表)的形式,出现在构造方法的第一句代码时,就表示当前构造方法,调用了该类中其它的构造方法,可以通过this的参数列表来匹配。
1.9 方法重载
A.多态:
就是同一种事物在不同的情况下有多种表现形式。
多态有两种表现形式:方法重载和方法重写。
方法重载:
在同一个类中,有多个方法名相同,但是参数列表不同包括参数的个数、类型、顺序的不同。
如果返回值类型不同,其它都相同的情况下,构不成方法重载。
2.0 Object类
A.Object类在Java中,是所有类的父类(超类、基类、根类),它位于java.lang包中。
凡是位于java.lang包中的类,都无需导包,可以直接使用。
如果一个类没有明确指明它的父类,则父类默认就是Object类。
B.Object类中的方法
public String toString():用来输出对象的字符串表示形式,包名.类名@对象哈希码值的16进制。
2.1 包
包是为了解决在大型项目开发中,数目众多的类命名冲突的问题。包说白了就是我们操作系统中的目录。
2.2 package 打包
语法:package 包名;
注:package一定要位于源文件的第一句代码。
2.3 import 导包
语法:
import 包名.类名 或者 包名.*;
Import语句一定要位于package语句下面。
2.4 JavaBean
JavaBean是一个可以重复使用的组件,也是Java中的一个普通类,只不过它需要遵循一定的规则,才能称为javaBean。
javaBean可以为所有私有的属性提供公共的set和get方法。
set方法是有参数无返回值的,目的是通过set方法给javabean中的私有属性赋值,命名方式 setXxx(数据类型 参数名) ,Xxx表示是属性名。
get方法是无参数有返回值的,目的是通过get方法获取javabean中私有属性的值,命名方式 getXxx()boolean类型的get方法 是以 is开头的。
2.5 访问修饰符
访问修饰符可以用来限定一个元素被使用的范围。
private:只能修饰属性和方法,不能修饰类,一般成员属性私有,方法公共public。
public:一般用来修饰类和方法,默认修饰符也可以修饰属性、方法、类。
protected:比较特殊,一般用来修饰受保护的属性和方法。