Java学习---day06_面向对象

本文主要介绍了Java的面向对象编程思想,包括面向对象与面向过程的区别、Java的面向对象特性、类与对象的设计、对象实例化、匿名对象、类中的成员访问、静态关键字static、this关键字、构造方法和封装性等核心概念。通过学习,读者可以深入理解Java的面向对象编程基础。
摘要由CSDN通过智能技术生成

Java学习—day06

面向对象与面向过程

  • 面向过程,面向对象都是一种看待问题、解决问题的思维方式。
  • 面向过程
    • 强调的是功能行为 —关注的是解决问题需要哪些步骤
    • 着眼点在于问题是怎样一步步的解决的,然后亲力亲为的解决这个问题。
  • 面向对象
    • 强调的是完成功能的对象 —关注的是解决问题需要哪些对象
    • 着眼点在于找到一个能够帮助解决问题的实体,然后委托这个实体解决问题。
  • 面向对象是相对面向过程而言
  • 面向对象是基于面向过程的
Java是面向对象的语言
  • 严格意义来讲,这句话不太准确。
  • 面向对象是一种编程思想,不是语言。
  • 面向对象的语言正确的理解应该是:使用这种语言更容易写出具有面向对象编程思想
    的代码。
使用面向对象的语言写出的程序,一定是面向对象的程序
  • 错!!!
  • 面向对象是一种编程思想。面向对象的语言只是更加容易写出具有面向对象编程思想
    的代码

面相对象特点

  • 是一种符合人们思考习惯的思想
  • 可以将复杂的事情简单化
  • 将程序员从执行者转换成了指挥者

完成需求时:

  • 先要去找具有所需的功能的对象来用。
  • 如果该对象不存在,那么创建一个具有所需功能的对象。

类与对象分析

在面向对象的编程思想中, 着眼点在于找到一个能够帮助解决问题的实体, 然后委托这个实
体解决问题。
在这里, 这个具有特定的功能, 能够解决特定问题的实体, 就是一个对象。
由若干个具有相同的特征和行为的对象的组成的集合, 就是一个类。

ps:类是对象的集合,对象是类的个体

JAVA中用类来描述的事物也是如此
属性:对应类中的成员变量
行为:对应类中的成员方法
定义类其实是在定义类中的成员(成员变量和成员方法)

识别类的小技巧:一般名称都是类(名词提炼法)

小明在公车上牵着一条叼着热狗的狗
分析:
拥有对象:小明,公车,热狗,狗
拥有类:可以是有一个类,两个类,三个类或者四个类

类的设计【会】

语法:

从若干具有相同的特征和行为的对象中,提取出这些相同的特征和行为,设计为一个类。

类中定义所有的对象共有的特征和行为,其中,特征用属性表示,行为用方法表示

ps:属性其实就是定义在类中的一个全局变量

定义类的时候i,使用的关键字class

[访问权限修饰符] class 类名 {
   
    // 类体
    // 属性: 描述所有对象共有的特征。
    // 方法: 描述所有对象共有的行为。
}

public class Person {
   
    // 使用属性, 描述所有对象的特征
    String name;    // 描述所有人的姓名
    int age;        // 描述所有人的年龄
    // 使用方法, 描述所有对象的行为
    public void eat() {
   }
    public void sleep() {
   }
    
}
类设计注意事项
  • 类名:是一个标识符,遵顼大驼峰命名法
  • 一个java文件中可以写多个类,但是只有与文件名相同的类,可以使用public修饰
  • 每一个类在编译后都会生成一个.class字节码文件,以类的名字命名
对象的实例化【会】

实例化对象,其实就是从类中找到一个实体

使用关键字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();
    }
}
对象的内存分析【了解】

ps:但凡遇到new都表示在堆上开辟空间。因此对象的实例化,也是在对上开辟空间。

匿名对象【会】

定义:匿名对象就是没有名字的对象

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

  • 作用

内存很宝贵,使用匿名对象可以更好的使用内存(随用随建,用完更快回收内存),节省内存

使用场景
1.用作方法参数
2.用匿名内部类
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("跑");
    }
}
多引用指向同一个对象【了解】
  • 原理说明

对象和数组都是引用数据类型,都是通过栈区中的引用(变量)保存堆区中的对象地址,所以当我
们让多个引用同时保存一个对象的地址,通过任何一个变量都可以访问这个对象(这就是前面讲
过的址传递的原理)

public class Demo6 {
   
    public static void main(String[] args) {
   
        Cat cat1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值