第三章 面向对象(上)

第三章 面向对象

1、面向对象开发、设计、特征

(1)面向对象开发 就是不断的创建对象,使用对象,指挥对象做事情。

(2) 面向对象设计 其实就是在管理和维护对象之间的关系。

(3)面向对象特征

A. 封装(encapsulation)

B.继承(inheritance)

C. 多态(polymorphism)

2、类与对象的关系

(1)类:是一组相关的属性和行为的集合 。

(2)对象:是该类事物的具体体现。

eg: 类 学生

对象 班长就是一个对象

3、类的定义

(1)现实事物:

属性:用来描述事物的信息

行为:用来描述事物能够做什么

(2)类:

成员变量:事物的属性

成员方法:事物行为

(3)定义一个类,其实就是定义这个类中成员变量和成员方法。

eg:我们来完成一个学生类的定义

学生:

属性:姓名,性别,年龄

行为:学习,吃饭,睡觉

类:

成员变量:name,gender,age

成员方法:study(),eat(),sleep()

如何定义一个成员变量?

A.定义的位置:在类中,方法外

B.定义的格式: 数据类型 变量名;

如何定义一个成员方法?

A.定义的位置:在类中

B.定义的格式: 修饰符 返回值类型 方法名(参数列表){

方法体;

}

注意事项:一个java文件中只能有一个类被public修饰 只需要记住被public修饰的类规范是要与java文件名一致。

(4)成员变量与局部变量的区别:

A.在类中定义的位置不同

成员变量:类中,但是在方法外

局部变量:定义在方法内部

B.在内存中的位置也不同

成员变量:在堆内存中

局部变量:在栈内存中

C.初始化值也不同

成员变量:系统会给予默认值

局部变量:没有系统给的默认值,必须在定义的时候赋值,亦或者在方法中使用之前赋值,然后才能使用。

D.生命周期不同

成员变量的生命周期:随着对象的创建而创建,随着对象的消失而消失

局部变量的生命周期:随着方法的调用而创建,随着方法的调用完毕而消失

注意事项:

a.局部变量的名字可以和成员变量的名字一样,在方法中使用的时候,采用就近原则。方法中使用的变量,会现在方法内部查找,如果方法内部没有,去成员变量中查找。

b.方法与方法之间里面的局部变量,不能互相调用。

(5)匿名对象:就是没有名字对象

匿名对象的使用场景:

A.调用方法的时候,仅仅调用一次的时候,可以使用匿名对象。

注意,当调用多次的时候,不适合,每次new的时候都是一个新的匿名对象,会频繁的在堆内存中开辟空间。

当匿名对象使用完毕之后,无法再使用第二次,就变成了一个垃圾(当栈中没有变量引用它的时候,判定是一个垃圾),等待被垃圾回收器回收。

B.当方法的参数类型是一个类的时候,可以使用匿名对象调用方法。

eg:

第三章 面向对象

1、面向对象开发、设计、特征

(1)面向对象开发 就是不断的创建对象,使用对象,指挥对象做事情。

(2) 面向对象设计 其实就是在管理和维护对象之间的关系。

(3)面向对象特征

A. 封装(encapsulation)

B.继承(inheritance)

C. 多态(polymorphism)

2、类与对象的关系

(1)类:是一组相关的属性和行为的集合 。

(2)对象:是该类事物的具体体现。

eg: 类 学生

对象 班长就是一个对象

3、类的定义

(1)现实事物:

属性:用来描述事物的信息

行为:用来描述事物能够做什么

(2)类:

成员变量:事物的属性

成员方法:事物行为

(3)定义一个类,其实就是定义这个类中成员变量和成员方法。

eg:我们来完成一个学生类的定义

学生:

属性:姓名,性别,年龄

行为:学习,吃饭,睡觉

类:

成员变量:name,gender,age

成员方法:study(),eat(),sleep()

如何定义一个成员变量?

A.定义的位置:在类中,方法外

B.定义的格式: 数据类型 变量名;

如何定义一个成员方法?

A.定义的位置:在类中

B.定义的格式: 修饰符 返回值类型 方法名(参数列表){

方法体;

}

注意事项:一个java文件中只能有一个类被public修饰 只需要记住被public修饰的类规范是要与java文件名一致。

(4)成员变量与局部变量的区别:

A.在类中定义的位置不同

成员变量:类中,但是在方法外

局部变量:定义在方法内部

B.在内存中的位置也不同

成员变量:在堆内存中

局部变量:在栈内存中

C.初始化值也不同

成员变量:系统会给予默认值

局部变量:没有系统给的默认值,必须在定义的时候赋值,亦或者在方法中使用之前赋值,然后才能使用。

D.生命周期不同

成员变量的生命周期:随着对象的创建而创建,随着对象的消失而消失

局部变量的生命周期:随着方法的调用而创建,随着方法的调用完毕而消失

注意事项:

a.局部变量的名字可以和成员变量的名字一样,在方法中使用的时候,采用就近原则。方法中使用的变量,会现在方法内部查找,如果方法内部没有,去成员变量中查找。

b.方法与方法之间里面的局部变量,不能互相调用。

(5)匿名对象:就是没有名字对象

匿名对象的使用场景:

A.调用方法的时候,仅仅调用一次的时候,可以使用匿名对象。

注意,当调用多次的时候,不适合,每次new的时候都是一个新的匿名对象,会频繁的在堆内存中开辟空间。

当匿名对象使用完毕之后,无法再使用第二次,就变成了一个垃圾(当栈中没有变量引用它的时候,判定是一个垃圾),等待被垃圾回收器回收。

B.当方法的参数类型是一个类的时候,可以使用匿名对象调用方法。

eg:

class Phone{
    public void show(){
        System.out.println("手机可以打电话");
    }
}

class PhoneDemo{
    public void function(Phone p){
        p.show();
    }
}

public class AnonymousDemo {
    public static void main(String[] args) {
        //创建一个PhoneDemo对象
        PhoneDemo pd = new PhoneDemo();
        Phone phone = new Phone();
        pd.function(phone);

        System.out.println("=============================");

        //当new完对象之后直接使用,没有用变量名接收的对象,称之为匿名对象
        new PhoneDemo().function(new Phone());
        new PhoneDemo().function(new Phone());
    }
}

(6)定义标准类

A.获取成员变量值的方法:

a.提供一个公共的方法,打印所有的成员变量值。

b.单个使用公共的获取方法,一个一个获取打印。

原因:单个使用比一起使用的灵活度要高。

B.private : 私有的。

a.它可以修饰成员(成员变量和成员方法)

b.被private修饰的成员只能在本类中访问使用。其他类中使用不了

eg:

成员变量:被private修饰

成员方法:getXxx()和setXxx(),其中setXxx(..)形参的名字与成员变量名字一致,使用this关键字赋值 ,show()

package TheVan373.bigdata.knowledgepoints;

class Phone {
    private String brand;
    private int price;
    private String color;

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getBrand() {
        return brand;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public int getPrice() {
        return price;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getColor() {
        return color;
    }

    public void show() {
        System.out.println(getBrand() + ":" + getPrice() + "(" + getColor() + ")");
    }
}

public class PhoneTest {
    public static void main(String[] args) {

        Phone phone = new Phone();

        phone.setBrand("华为P20");
        phone.setPrice(4160);
        phone.setColor("宝石蓝");

        phone.show();

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值