100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Java基础【之】面向对象编程(类 面向过程 面向对象 对象 属性 行为)(大象进冰箱)

Java基础【之】面向对象编程(类 面向过程 面向对象 对象 属性 行为)(大象进冰箱)

时间:2021-01-22 04:01:26

相关推荐

Java基础【之】面向对象编程(类 面向过程 面向对象 对象 属性 行为)(大象进冰箱)

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

this

this指的是,当前类被实例化后的,对象的引用;一般作用于,当参数与成员变量名称一致时,用来区分属性与参数。如下方大象进冰箱代码中的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渐进式学习》

点击跳转

《幕》

留白 —<老吉> ~ 今 ~ ❀ ~ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。