首页 > 编程 > Java > 正文

【JAVA】8.类和对象

2019-11-11 02:43:42
字体:
来源:转载
供稿:网友

一、面向对象(OPP)

面向对像是一种思想面向过程:强调过程,功能行为(执行者)面向对象:将功能封装进对象,强调具备了功能的对象(指挥者)三个特征:封装,继承,多态开发:就是找对象使用。没有对象,就创建一个对象,将功能封装进特点:找对象,建立对象,使用对象,维护对象的关系

例:我要开车去新疆

· 面向过程:我要开车,我拉开车门,我坐在驾驶座,我过山东… (对过程了如执掌)

· 面向对象:我命令车去新疆(车.Go),车怎么过去不关心,不用了解车整个开动的过程,车暴露出来的功能就是去哪里。 (车把自己的信息,功能封装在车这个类的内部)

二、类和对象关系

类:现实生活中事物的描述。(描述人:姓名,年龄,性别等),映射到java中,就是class定义的类。类是具有相同属性和方法的一组对象的集合,描述对象的具体信息。在一个类中,定义了该类对象所应具有的属性和方法。对象: 每个对象都有一种类型,都是某个“类”的一个“实例”。 每个对象都隶属一个特定的“类”,那个类具有自己的通用特征与行为。 就是这类事物,实实在在存在的个体(如某一个人),对应JAVA在堆内存中用new建立的实体。

例1:职员(类)

属性(静态,特定的值):姓名、年龄、工资数额——成员变量 方法(对象能干什么,功能):显示姓名(),显示年龄(),领取工资()

根据类可以衍生出不同的对象——实例化 职员A:姓名:A,年龄:20, 工资:4000——对象(成员变量和方法的封装体)

public class Text { public static void main(String[] args){ Worker a = new Worker();//a就是Worker类类型变量——对象 a.name = "A"; a.age = 20; a.wages = 4000; a.showname(); a.showage(); a.getwages(); }}//描述职员(类)class Worker { //成员变量(属性),对象有什么 String name; int age; int wages; //方法(功能),对象能干什么 void showname() { System.out.PRintln("姓名:"+name); } void showage(){ System.out.println("年龄:"+age); } void getwages() { System.out.println("工资数额:"+wages); }}//运行结果:姓名:A年龄:20工资数额:4000

例2:人开门——分析:(找名词)

人 { 开门(门) { 门.开 }}门 { 开() { 操作门轴等 ... }}//最合适的方法应该出现在最合适的类中//门怎么开门本身最清楚,所以开这个功能应该定义在门中

三、面向对象设计思想

1、对于一个问题,首先要考虑这个问题,应该有哪些个类,哪些个对象 2、然后考虑,这些类和对象,每种类和每个对象应该具有哪些属性和方法 3、再考虑,类和类之间具备什么样的关系

四、定义类

1、所有JAVA程序都以类class为组织单元。【class是定义类的关键字】 2、类的组成:成员变量和方法 3、定义类的步骤 · 定义类名 · 编写类的属性 · 编写类的方法

class 类名 { //定义类的属性 有什么 属性1的类型 属性1; 属性2的类型 属性2; ... //定义方法 能干什么 方法1; 方法2; ...}

例:买一个手机,首先你要想你想要的手机是什么,想像中的手机就是类。屏幕尺寸,CPU、内存等用属性表示,打电话,发短信等功能用方法来表示。

//1.定义一个类public class Telephone { //2.声明属性,有什么 float screen;//屏幕尺寸 float cpu; float mem;//内存大小 //3.定义方法,干什么 void call() { System.out.println("打电话功能"); } void sendMessage() { System.out.println("发短信功能"); }}

五、使用对象

创建对象: 类名 对象名 = new 类名();//位于堆内存,动态分配内存Telephone phone = new Telephone();使用对象:对象名.属性/方法phone.mem = 4.0f;//给mem属性赋值4,float型phone.call();//调用call方法注:同一类的每个对象有不同的成员变量存储空间,同一类的每个对象共享该类的方法

六、局部变量和成员变量

1、定义

局部变量(栈内存中)定义在方法中,在方法中临时保存数据 成员变量(堆内存中)定义在类中,因为对象的存在,才在内存中存在

这里写图片描述

2、作用域

局部变量的作用于仅限于定义的方法中,或语句中 成员变量的作用于定义它的整个类中 作用于声明的{}中,出了就没人认识了

3、初始值

JAVA会给成员变量一个初值,不会给局部变量赋予初值 成员变量初值:

这里写图片描述

4、在一个方法中,不允许有同名局部变量。在不同方法中,允许有同名局部变量

5、两类变量同名时,局部变量具有更高优先级

public class a { int a = 1; void b() { int a = 2; System.out.println(a); }}//运行结果:2

七、匿名对象

public class Text { public static void main(String[] args){ //Worker a = new Worker();有名对象 //a.name = "A"; //匿名对象,没有定义对象名 new Worker().name = "A"; //这句话执行完,把A给name后,就变成垃圾了 new Worker().age = 18; //在堆内存又生成一块区域,执行完,该内存又变成垃圾了 //所以匿名对象调用属性无意义 new Worker().showname(); //匿名对象调用方法有意义 }}class Worker { String name; int age; int wages; void showname() { System.out.println("姓名:"+name); }}//如果对一个对象进行多个成员调用,就必须给对象起个名字//匿名对象什么时候使用://1.当对对象的方法只调用一次时。//2.可以将匿名对象作为实际参数进行传递public class Text { public static void main(String[] args){ //Worker a = new Worker();有名对象 //show(a); show(new Worker());//执行完堆内存区域就成垃圾了 //new Worker()作为实参传给a相当于Worker a = new Worker() } public static void show(Worker a) { a.name = "A"; a.showname(); }}class Worker { String name; void showname() { System.out.println("姓名:"+name); }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表