java基础_day07

面向对象

一 面向对象与面向过程

面向过程,面向对象都是一种看待问题、解决问题的思维方式。
面向过程
---强调的是功能行为 ---关注的是解决问题需要哪些步骤
---着眼点在于问题是怎样一步步的解决的,然后亲力亲为的解决这个问题。
面向对象
---强调的是完成功能的对象 ---关注的是解决问题需要哪些对象
---着眼点在于找到一个能够帮助解决问题的实体,然后委托这个实体解决问题。
面向对象是相对面向过程而言
面向对象是基于面向过程的。

二 类与对象详述

1 类的设计(会)

. 语法
从若干个具有相同的特征和行为的对象中, 提取出这些相同的特征和行为, 设计为一个类。
类中定义所有的对象共有的特征和行为, 其中, 特征用属性表示, 行为用方法表示。
所谓属性, 其实就是定义在类中的一个全局变量。
在定义类的使用, 使用关键字class
​
. 类设计注意事项
类名: 是一个标识符, 遵循大驼峰命名法。
一个java文件中可以写多个类, 但是只有与文件名相同的类, 可以使用public修饰。
每一个类在编译后都会生成一个.class字节码文件, 以类的名字命名。
​
[访问权限修饰符] class 类名 {
// 类体
// 属性: 描述所有对象共有的特征。
// 方法: 描述所有对象共有的行为。
}
​
示例代码:
public class Person {
// 使用属性, 描述所有对象的特征
    String name; // 描述所有人的姓名
    int age; // 描述所有人的年龄
// 使用方法, 描述所有对象的行为
    public void eat() {}
    public void sleep() {}
}
​
​

三 实例化对象

实例化:实例化对象, 其实就是从类中找到一个实体。 使用关键字 new 进行实例化。

class Person {
// 使用属性, 描述所有对象的特征
    String name; // 描述所有人的姓名
    int age; // 描述所有人的年龄
// 使用方法, 描述所有对象的行为
    public void eat() {}
    public void sleep() {}
}
class Test {
    public static void main(String[] args) {
// 使用new进行对象的实例化,对象内的属性会自动进行初始化,引用类型初始化成
    null,int赋值成0,boolean赋值成false
    Person xiaoming = new Person();
    }
}

四 匿名对象(会)

定义:

匿名对象就是没有名字的对象因为没有名字,所以当我们想使用匿名对象实现功能时,只能在创建对象的这个时刻使用一次.一旦使用完毕,这个对象我们就再也无法调用,变成了垃圾.系统会通过垃圾回收机制在某个时刻进行内存回收---(垃圾回收机制在JVM处会讲).

使用场景:

1.用作方法参数
2.用作匿名内部类(在day10_接口和内部类讲)

示例代码:

public class Demo5 {
    public static void main(String[] args) {
        Dog d = new Dog();
        d.age = 10;
        new Dog();//没有名字的对象---匿名对象--本身就是垃圾
        new Dog().age = 30;
//功能测试
//经常使用匿名对象作为方法的参数,节省代码,节省内存
//Dog d1 = new Dog();
feedDog(new Dog());
}
public static void feedDog(Dog dog){
    dog.run();
    }
}
class Dog{
    String name;
    int age;
    public void run(){
    System.out.println("跑");
    }
}

五 类中的成员访问

1 成员分类

使用关键字static修饰的属性、方法, 被称为静态属性、静态方法。
没有使用关键字static修饰的属性、方法, 被称为非静态属性、非静态方法, 又被称为实例属性、实例方法。

2 访问

静态成员需要使用类访问,非静态成员需要使用对象访问。
静态方法中可以直接访问本类中的静态成员,不能直接访问本类中的非静态成员。
非静态方法中可以直接访问本类中的静态成员,也可以直接访问本类中的非静态成员。

示例代码:

public class Person {
    int height = 10; //定义变量时直接赋值,意思是说:当我们在创建对象时,如果不单
独赋值,他的height的值就是当前的10
    String name; // 描述所有人的姓名
    int age; // 描述所有人的年龄
    static int COUNT; // 静态属性, 描述对象的数量
    public void eat() {}
    public void sleep() {}
//静态方法
public class Person {
    int height = 10; //定义变量时直接赋值,意思是说:当我们在创建对象时,如果不单
独赋值,他的height的值就是当前的10
    String name; // 描述所有人的姓名
    int age; // 描述所有人的年龄
    static int COUNT; // 静态属性, 描述对象的数量
public void eat() {}
public void sleep() {}
//静态方法

五 Static

1 static定义

是一个关键字,被static修饰的成员就变成了静态的.具有保值功能。
如果某些属性是属于不同的对象, 每一个对象的值都不同, 可以设计为非静态。 例如人的名
字。
如果某些属性是可以被所有的对象共享的, 每一个对象看到的值都是相同的, 可以设计为静
态。 例如对象的数量。

六 this关键字

1 概念:

是一种引用数据类型,本身是一个关键字,用在类的实例方法或者构造方法中,代表的是当前的对象,保存的是当前对象的地址
场景:当我们想在当前类的内部拿到当前对象的引用时,可以使用this

2 this功能总结

1.用来区分成员变量和局部变量
2.可以在构造方法内部调用其他重载的构造方法,提高代码的复用性,简化代码(具体实现见
构造方法小节)

七 区分成员变量和局部变量

在类中, 使用方法时,为了更好的表示参数代表的成员变量意思,我们会将参数的名字和对应成员变量的名字一致。 此时, 如果在方法内部直接使用名字来访问, 根据就近原则(在内存中离方法的远近判断)优先访问的是局部变量(参数)。 因此需要使用this关键字表示对当前对象的引用,访问成员变量,因为使用this访问的一定成员变量。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值