Java基础【之】面向对象编程(类、面向过程、面向对象、对象、属性、行为)(大象进冰箱)
1.面向对象与面向过程(大象门事件!!!)1.1.面向过程(POP)1.2.面向对象(OOP)1.3.注意 2.类的组成2.1.类、对象、构造器2.2.匿名对象2.3.方法2.4.属性2.5.访问与权限 3.关键字(this、package、import)3.1.this3.2.package3.3.import 4.大象进冰箱(代码实现)《上一篇:运算、位运算、比较、循环与控制》《 UML类图》《目录:Java渐进式学习》《幕》1.面向对象与面向过程(大象门事件!!!)
1.1.面向过程(POP)
面向过程(POP) :Object Oriented Programming
面向过程,强调实现功能逻辑的最小单位是,函数方法。
强调一个函数实现一个小功能,然后函数之间组合调用,完成整体事件。
经典 大象门事件,分几步走?(流程与函数个数并非固定)
1.函数与执行顺序:(1.买冰箱、2.开门、3.找大象、4.推进冰箱、5.关门)
2.函数与执行顺序:(1.买冰箱并且开门、2.找大象并且推进冰箱、3.关门)
1.2.面向对象(OOP)
面向对象(OOP):Procedure Oriented Programming
面向对象,强调实现功能逻辑的最小单位是,类和类实例化出来的对象.
强调先将事件查分设计为,多种类,然后设计类中的方法,然后实例化类对象,对象间相互调用完成整体事件
面向对象的三大特征
封装 (Encapsulation)
继承 (Inheritance)
多态 (Polymorphism)
经典 大象门事件,分几步走?(按照世人思路,基本上面向对象都会有最佳实践,流程与函数相对固定)
1.设计一个 冰箱.class 类
2.设计一个 大象.class 类
3.设计一个 人.class 类
4.各自创建实例,通过人把冰箱打开,通过人把大象装进冰箱,通过人关闭冰箱门
1.3.注意
作为代码编写者来说,面向对象是一种思想,需要借助面向对象的语言,才能实现所谓的类,就是对现实问题中所出现的,可分析的事物的抽象,抽出具有事物特点的 属性 与 行为(方法)对象,是类实例化出来的产物,作为内存中的一块区域存在,产生的同时具备了类的属性与行为举例人喝水:需要实际分析,人如何喝水,水从哪里来,是否需要盛水容器,由这些疑问可以简单的先抽象出
人.class(是否口渴(),喝水() )
水杯.class(容量,水,是否有水() )
水桶.class (水,是否有水(),倒水() )
如果不满足实际情况,可以删减和修改类中的内容,最终目的是满足实际情况
2.类的组成
java语言中,通过关键字 class 定义类文件类:是对现实事物的抽象,如:人.class,树木.class对象:是对类创建出来的事物,如:人可以创建出,小王、小张 ; 树木可以创建出,杨树、柳树属性(成员变量):(类、对象)具有的属性,如:小王身高1.7m,杨树高20m行为(方法、函数):(类、对象)具有的方法,如:小王会弹吉他,小张会唱歌和游泳
2.1.类、对象、构造器
类:通过 class关键字进行定义
创建对象语法:
类名 对象名 = new 类名();
使用“对象名.对象成员”的方式访问对象成员(包括属性和方法)
构造器:创建对象;给对象进行初始化;
1.构造器与类相同的名称
2.没有返回值
3.不可以用 static、final、synchronized、abstract、native 修饰
4.不可以用 return
语法:修饰符 类名 (参数列表) { 初始化代码;}
根据参数不同,构造器可以分为如下两类:隐式无参构造器(系统默认提供)
显式定义一个或多个构造器(无参、有参)
注 意:Java语言中,每个类默认都有一个无参构造器,默认构造器的修饰符与所属类的修饰符一致
显式定义了构造器,系统将不再提供默认构造器
一个类可以创建多个重载的构造器
父类的构造器不可被子类继承
/*** 构造器* * 根据参数不同,构造器可以分为如下两类:* 隐式无参构造器(系统默认提供)* 显式定义一个或多个构造器(无参、有参)*/class GouZaoQi {private int a = 1;private String b = "hello";public GouZaoQi() {}public GouZaoQi(int a) {this.a = a;}public GouZaoQi(String b) {this.b = b;}public GouZaoQi(int a, String b) {this.a = a;this.b = b;}public void hello() {System.out.println(a +" "+ b);}}public class TestGouZaoQi {public static void main(String[] args) {GouZaoQi gz1 = new GouZaoQi();gz1.hello();// 1 helloGouZaoQi gz2 = new GouZaoQi(999);gz2.hello();// 999 helloGouZaoQi gz3 = new GouZaoQi("ooo");gz3.hello();// 1 oooGouZaoQi gz4 = new GouZaoQi(999, "ooo");gz4.hello();// 999 ooo}}
2.2.匿名对象
不定义对象名,直接通过new 类().方法();
来调用方法和属性。这种对象叫做匿名对象
如果对一个对象只需要进行一次创建,一次使用,就可以使用匿名对象。常用作参数传递。
2.3.方法
方法用来完成某个功能。在某些语言中 也称为函数或过程。
将功能封装为方法,实现代码重用,方法必须定义在类里。格式:
修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ….){
方法体程序代码
return 返回值;
}修饰符:public,缺省,private, protected等没有返回值:void。有返回值:“return 返回值” 并 声明出返回值的类型。
参数形参:方法声明时的参数实参: 方法调用时实际传给形参的参数值参数列表:可以包含零个,一个或多个参数。多个参数时,中间用“, ”隔开可变参数列表:方法名(参数的类型名 ...参数名)
基本数据类型:传递的是“数据值”引用数据类型:传递的是“地址值/引用”
方法重载:方法名相同,参数类型不同或者参数顺序不通普通方法:通过对象调用普通方法静态方法/类方法:用 static 关键字修饰,通过类名调用静态方法
/*** 构造器*/class GouZaoQi {private int a = 1;private String b = "hello";//无参构造器public GouZaoQi() {}//有参构造器public GouZaoQi(int a) {this.a = a;}//有参重载构造器public GouZaoQi(String b) {this.b = b;}//有参重载构造器public GouZaoQi(int a, String b) {this.a = a;this.b = b;}//普通方法public void hello() {System.out.println(a + b);}//静态方法public static void helloStatic(String str) {System.out.println("静态方法: " + str);}}public class TestGouZaoQi {public static void main(String[] args) {//通过对象调用普通方法GouZaoQi gz1 = new GouZaoQi();gz1.hello();////调用静态方法,通过类名调用GouZaoQi.helloStatic("略略略~");}}
2.4.属性
普通属性:通过对象调用,普通属性类属性/静态属性:调用静态属性,通过类名调用语法格式:修饰符 数据类型 属性名 = 初始化值 ;
/*** 构造器*/class GouZaoQi {//属性 apublic int a = 1;//静态属性 bpublic static String b = "hello";//无参构造器public GouZaoQi() {}}public class TestGouZaoQi {public static void main(String[] args) {//通过对象调用,普通属性GouZaoQi gz1 = new GouZaoQi();System.out.println(gz1.a);//调用静态属性,通过类名调用System.out.println(GouZaoQi.b);}}
2.5.访问与权限
在一个类中:类中的方法可以直接访问类中的成员变量。 static方法内不可以访问非static在不同类中:先创建类的对象,再用对象访问类中的成员与方法。静态 直接用类名.
访问
访问权限可以作用于,类、成员变量、方法类的权限修饰,只能用 public 或 默认(不写)
public:可以被任意类访问。protected :能被同一个包下的类访问,还可以被任意子类访问。默认:只能被同一个包下的类访问。private:不可以被其他类访问。
3.关键字(this、package、import)
3.1.this
thisthis指的是,当前类被实例化后的,对象的引用;一般作用于,当参数与成员变量名称一致时,用来区分属性与参数。如下方
大象进冰箱
代码中的this.name = name;
this访问属性和方法时,如果当前类中不存在时,会向上找当前类的父类,如果没有直接编译报错。
this可以简化构造器间的相互调用调用方式:this(参数列表)
注意:
this(形参列表)
必须声明在类的构造器的首行!构造器中不能通过
this(形参列表)
的方式调用自身构造器在类的一个构造器中,最多只能使用一次
this(形参列表)
/*** 大象*/class DaXiang {//大象名字public String name;//大象构造函数--public DaXiang() {this("默认");}//大象构造函数public DaXiang(String name) {this.name = name;} }
3.2.package
package
package 指明该文件中定义的类所在 的包。
语法:
package 顶层包名.子包名 ;
包对应于文件系统的目录,package语句中,用 “. ” 来指明包(目录)的层次;
包通常用小写单词标识。通常使用所在公司域名的倒置:com.atguigu.xxx
作用:
将功能相近的类划分到同一个包中,划分项目层次,便于管理
解决类命名冲突
JDK中的一些包 java.lang:核心类,字符串、基本类型包装类、系统操作、线程:网络相关的类和接口。java.io:输入/输出功能的类。java.util:工具类。java.text:格式化java.sql:数据库编程相关java.awt:图形用户界面(GUI)
3.3.import
语法:import 包名. 类名;
作用为了在自定义类中,使用上述
package
包中的功能。通过
import
语句,引入指定包层次下的类 或 全部类(.*) 。
import
语句告诉编译器到哪里去寻找类,路径错误会运行时会报错。
4.大象进冰箱(代码实现)
大象.class 类、冰箱.class 类、人.class 类、测试类
测试类的执行流程1.创建 大象2.创建 冰箱3.创建 人4.操作4.1.人操作冰箱开门
4.2.人通过冰箱
4.3.把大象装进冰箱
4.4.人关闭冰箱门
/*** 大象*/class DaXiang {//大象名字public String name;//大象构造函数public DaXiang(String name) {this.name = name;}//输出当前信息@Overridepublic String toString() {return "DaXiang{" +"name='" + name + '\'' +'}';}}/*** 冰箱*/class BingXiang {//冰箱名字public String name;//冰箱构造函数public BingXiang(String name) {this.name = name;}public void 开门() {System.out.println(name + ":开门");}public void 关门() {System.out.println(name + ":关门");}public void 装东西(Object obj) {System.out.println(name + ":装进一个 :" + obj.toString());}}/*** 人*/class Ren {//人名public String name;//人构造函数public Ren(String name) {this.name = name;}//执行操作public void start(DaXiang daXiang, BingXiang bingXiang) {System.out.println(name + " : 开始了自己的操作");bingXiang.开门();bingXiang.装东西(daXiang);bingXiang.关门();}}/*** 大象进冰箱*/public class DaXiangJinBingXiang {public static void main(String[] args) {DaXiang 大象 = new DaXiang("大象");BingXiang 孩儿牌子冰箱 = new BingXiang("孩儿牌冰箱");//Ren ren = new Ren("小明");ren.start(大象, 孩儿牌子冰箱);}}
《上一篇:运算、位运算、比较、循环与控制》
比较、运算、位运算(点击跳转)循环、流程控制 (if else、whitch case、while、do while、for…i、foreach、多层循环与退出)(点击跳转)
《 UML类图》
点击跳转
《目录:Java渐进式学习》
点击跳转
《幕》
留白 —<老吉> ~ 今 ~ ❀ ~ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀