面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个过程
面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做事
面向过程
public class face {
public static void main(String[] args) {
int[] array = {10,20,30,40,50};
//打印格式为[10,20,30,40,50]
//使用面向过程,每一个步骤亲力亲为
System.out.print("[");
for (int i = 0; i < array.length; i++) {
if (i == array.length - 1) {
System.out.println(array[i] + "]");
}else{
System.out.print(array[i] + ",");
}
}
}
}
面向对象
import java.util.Arrays;
public class face {
public static void main(String[] args) {
int[] array = {10,20,30,40,50};
//打印格式为[10,20,30,40,50]
//使用面向过程
System.out.print("[");
for (int i = 0; i < array.length; i++) {
if (i == array.length - 1) {
System.out.println(array[i] + "]");
}else{
System.out.print(array[i] + " ,");
}
}
System.out.println("=============================");
System.out.println(Arrays.toString(array));
//使用面向对象
//找一个JDK给我们提供好的Arrays类
//其中有一个toString方法,直接就能把数组变成想要的格式的字符串
}
}
面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。
面向对象的语言中,包含了三大基本特征,即封装,继承和多姿
类
类:是一组相关属性和行为的集合,可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物
属性:就是该物的状态信息 eg:名字,体重,年龄,颜色
行为:就是该事物能够干什么 eg:走,跑,叫
package javalx;
/*定义一个类,用来模拟“学生事物”,其中就有两个部分组成
属性:(是什么)
名字
年龄
行为:吃饭
睡觉
学习
对应到JAVA的类当中
成员变量(属性)
String name;//姓名
int age;//年龄
成员方法(行为)
public void eat(){} //吃饭
public void sleep(){} //睡觉
public void study(){} //学习
*/
public class student {
String name;
int age;
public void eat(){
System.out.println("吃饭饭!");
}
public void sleep(){
System.out.println("睡觉觉!");
}
public void study(){
System.out.println("学习!");
}
}
注意事项
1.成员变量是直接定义在类当中的,在方法外边
2.成员方法没有static关键字
通常情况下,一个类并不能直接使用,需要根据创造一个对象,才能使用
1.导包:也就是指出需要使用的类,在什么位置
import 包名称.类名称 eg:上面代码 import lxjava.student;
对于和当前类属于同一个包的情况,可以省略导包语句不写
2.创建
类名称 对象名 = new 类名称();
Student stu = new Student();
3.使用 ,分为两种情况
使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名
想用谁,就用对象名点儿谁
类与对象的关系
类是对一类事物的描述,是抽象的
对象是一类事物的实例,是具体的
类是对象的模板,对象是类的实体
package javalx;
public class DemoStudent {
public static void main(String[] args) {
Student stu = new Student();
System.out.println(stu.age);//0
System.out.println(stu.name);//null
stu.name = "赵丽颖";
stu.age = 18;
System.out.println(stu.age);//18
System.out.println(stu.name);//赵丽颖
stu.eat();//吃饭饭!
stu.study();//学习!
}
}
注意事项
如果成员变量没有进行赋值,那么将有一个默认值,规则和数组一样
package demo01;
/*属性
品牌,价格,颜色
行为
打电话,发短信
成员变量
String brand;
int prince;
String color;
成员方法
public void call(String who){};
);
public void message(){};
*/
public class Phone {
String brand;
int prince;
String color;
public void call(String who) {
System.out.println("给"+who+"打电话");
}
public void message(){
System.out.println("群发短信");
}
}
package demo01;
public class Demo01Phone {
public static void main(String[] args) {
//根据phone类,创建一个名为one的对象
//格式,类名称 对象名 = new 类名称();
Phone one = new Phone();
one.brand = "华为";
one.prince = 9000;
one.color = "银色";
System.out.println(one.brand);
System.out.println(one.prince);
System.out.println(one.color);
one.call("任正非");
one.message();
}
}
封装
private关键字
是一个权限修饰符
是可以修饰成员(成员变量和成员方法)
作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作
提供“get变量名()”方法,由于获取成员变量的值,方法用public修饰
提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public饰
private关键字的使用
package javalx;
/*定义一个类,用来模拟“学生事物”,其中就有两个部分组成
属性:(是什么)
名字
年龄
行为:吃饭
睡觉
学习
对应到JAVA的类当中
成员变量(属性)
String name;//姓名
int age;//年龄
成员方法(行为)
public void eat(){} //吃饭
public void sleep(){} //睡觉
public void study(){} //学习
*/
public class Student {
String name;
// int age;
private int age;
public void setAge(int a){
age = a;
}
public int getAge() {
return age;
}
public void eat(){
System.out.println("吃饭饭!");
}
public void sleep(){
System.out.println("睡觉觉!");
}
public void study(){
System.out.println("学习!");
}
}
package javalx;
public class DemoStudent {
public static void main(String[] args) {
Student stu = new Student();
System.out.println(stu.getAge());
System.out.println(stu.name);
stu.name = "刘海洋";
stu.setAge(30);
System.out.println(stu.getAge());
System.out.println(stu.name);
stu.eat();
stu.study();
stu.sleep();
}
}
this关键字
this修饰的变量用于指代成员变量
方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
方法的形参没有与成员变量同名,不带this修饰的是成员变量
this:代表所在类的对象引用
方法被那个对象调用,this就代表哪个对象
package javelx;
public class Student {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
// int age;
private int age;
public void setAge(int a){
age = a;
}
public int getAge() {
return age;
}
public void eat(){
System.out.println("吃饭饭!");
}
public void sleep(){
System.out.println("睡觉觉!");
}
public void study(){
System.out.println("学习!");
}
}
package javalx;
public class DemoStudent {
public static void main(String[] args) {
Student stu = new Student();
stu.setName("LIUEUX");
stu.setAge(19);
System.out.println(stu.getAge());
System.out.println(stu.getName());
stu.eat();
stu.study();
stu.sleep();
}
}
封装
1.概述:
是面向对象的三大特征之一(封装,继承,多态)
是面向对象编程语言对客观世界的模拟,客观世界里的成员变量都是隐藏在对象内部的,外界无法操作
2.封装原则
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
成员变量private,提供对应的getXxxv()/setXxx()方法
3.封装的好处
通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性
构造方法
构造方法概述
构造方法是一种特殊的方法
作用:创建对象
格式:
public class 类名{ public class Student {
修饰符 类名(参数){ public Student() {
//构造方法内书写的内容 //构造方法内书写的内容
} }
} }
功能:主要完成对象数据的初始化
package demo02;
public class Student{
private String name;
private int age;
public Student() {
System.out.println("无参构造方法");
}
public void show() {
System.out.println(name+","+age);
}
注意事项
标准类的制作
1.成员方法
使用private修饰
2.构造方法
提供一个无参构造方法
提供一个带多个参数的构造方法
3.成员变量
提供每一个成员变量对应的setXxx()/getXxx()
提供一个显示对象信息的show()
4.创建对象并为其成员变量赋值的两种方式
无参构造方法创建对象后使用setXxxv()赋值
使用带参数构造方法直接创建带有属性值的对象
public class Student{
private String name;
private int age;
public Student() {}
public Student(String name,int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void show() {
System.out.println(name+","+age);
}
}
package demo02;
public class StudentDemo02 {
public static void main(String[] args) {
Student s1 = new Student();
s1.setName("林青霞");
s1.setAge(30);
s1.show();
Student s2 = new Student("林青霞",30);
s2.show();
}
}
面向对像的复习
类是相同事物共同特征的描述(设计图),对象是具体存在的实例
类中定义5大成分:成员变量,构造器,成员方法,代码块,内部类
![]()
构造器
this关键字
作用:出现在成员方法,构造器中代表当前对象的地址,用于指定访问当前对象的成员变量,成员方法、
![]()
this在成员变量中的用法
package thisdemo; public class Car { private String name; private String price; public Car(){} public Car(String name, String price) { this.name = name; this.price = price; } public void go(String name){ System.out.println(this); System.out.println(this.name+"正在和"+name+"一起比赛!"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } }
package thisdemo; import java.util.logging.SocketHandler; public class test { public static void main(String[] args) { Car c1 = new Car(); Car c2 = new Car("法拉利","100亿"); System.out.println(c2.getName()); System.out.println(c2.getPrice()); c2.go("保时捷"); System.out.println(c2); } }
面向对象的三大特征(封装,继承,多态 )之一:封装
封装的基本思想:合理隐藏(隐藏细节),合理暴露(提供访问入口)
封装步骤:将成员变量私有,提供方法进行暴露
封装作用:提高业务功能设计的安全性,提高组件化
标准JavaBean
也可以理解成实体类,其对象可以用于在程序中封装数据