Java面向对象(一)

Java面向对象(一)

一、面向过程(POP)与面向对象(OOP)

  • 二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象,将功能封装进对 象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。
  • 面向对象的三大特征:
  • 封装
  • 继承
  • 多态
  • (抽象)
  • 例子:把大象装进冰箱

Java面向对象(一)
  • *Java语言就是一门面向对象的语言。

二、类和对象

  • 类和对象是 Java 语言两个基本元素。 类:对一类事物的描述,是抽象的、概念上的定义。 对象:实际存在的该类事物的每个个体,因而也称为实例(instance)。 例如:人是一个类,而每个特定的人就是一个对象。
  • 面向对象程序设计的重点是类的设计 。 类的设计,其实就是类的成员的设计。

2.1 类及类的成员

  • 类的成员:
  • 属性 = 成员变量,
  • (成员)方法 = 函数
  • 构造器
  • 代码块
  • 内部类

例如:

Java面向对象(一)

注意:一个类中不一定要包含所有的类的成员。

2.2 对象的创建与使用

  • 如何使用我们写好的 Java 类及类的成员?

​ 将 Java 类实例化,即创建对象来调用。

  • 创建对象语法: 类名 对象名 = new 类名();
  • 使用” 对象名.对象成员“的方式访问对象成员(包括属性和方法)
public class People {
    String name;
    int age;
    public void eat(){
    System.out.println("Eating.");
    }
    public viod move(){
    System.out.println("Move.");
    }
}
public class Text{
    public static void main(String args[]){
    //创建对象
    People p1 = new People();
    p1.age = 20;//访问属性
    System.out.println(p1.age);
    p1.eat();//访问方法
    p1.move();//访问方法

    People p2 = new People();
    People p3 = p1;
    }
}

注: 每创建一个类的对象,则每个对象都独立拥有一套类的属性(非static的)。例如上面代码中,p1和 p2对象都独立拥有一套类的属性,但是应为 p3对象是赋予了 p1对象的地址,所以它跟p1 指向堆空间中的同一个对象实体。

2.3 类的访问机制

在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static,编译不通过。)

在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。

2.4 Java内存解析

Java面向对象(一)

特别的: 数组对象的内存解析:

Java面向对象(一)

2.5 匿名对象

  1. 概念:创建的对象没有显式的赋给一个变量名,即为匿名对象。
  2. 创建:new 类名().方法名()
  3. 特征:只能调用一次。(每 new 一次就相当于创建一个新的对象)
  4. 使用:
  5. 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
  6. 经常将匿名对象作为实参传递给一个方法调用。
public class InstanceTest {
    public static void main(String[] args) {
//      匿名对象的创建
        new Phone().sendEmail();
        new Phone().playGame();

//      每 new 一次就相当于新创建一个对象
        new Phone().price = 1999;
        new Phone().showPrice();//0.0

//      匿名对象做实参
        PhoneMall mall = new PhoneMall();
        mall.show(new Phone());
    }
}

class PhoneMall{
    public void show(Phone phone){
        phone.sendEmail();
        phone.playGame();
    }
}

class Phone{
    double price;//价格
    public void sendEmail(){
        System.out.println("发送邮件");
    }
    public void playGame(){
        System.out.println("玩游戏");
    }
    public void showPrice(){
        System.out.println("手机价格为:" + price);
    }
}

三、类的成员之一:属性(也叫成员变量)

语法格式: 修饰符 数据类型 属性名 = 初始化值 ;

  • 常用的权限修饰符有:private、缺省(default)、protected、public 其他修饰符:static、final (暂不考虑)
  • 数据类型:任何基本数据类型 或 任何引用数据类型。
  • 属性名:属于标识符,符合命名规则和规范即可。

变量的分类:成员变量与局部变量

  • 成员变量:在方法体外,类体内声明的变量
  • 局部变量:在方法体内部声明的变量
  • 注意:二者在初始化值方面的异同: 同:都有生命周期 *异:局部变量除形参外,均需显式初始化。

Java面向对象(一)

Java面向对象(一)

例子:

Java面向对象(一)

对象属性的默认初始化赋值

Java面向对象(一)

四、类的成员之二:方法

4.1 方法的声明格式:

修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ....){

        方法体程序代码

        return 返回值;
}

其中:
1.修饰符:public,缺省,private, protected等
2.返回值类型:
  (1) 没有返回值:void。
  (2) 有返回值,声明出返回值的类型。与方法体中"return 返回值"搭配使用
3.方法名:属于标识符,命名时遵循标识符命名规则和规范,"见名知意"
4.形参列表:可以包含零个,一个或多个参数。多个参数时,中间用","隔开
5.返回值:方法在执行完毕后返还给调用它的程序的数据。

4.2 方法的调用:

方法通过方法名被调用,且只有被调用才会执行。

Java面向对象(一)

4.3 注意:

  1. 方法被调用一次,就会执行一次。
  2. 没有具体返回值的情况,返回值类型用关键字void表示,那么方法体中可以不必使用return语句。如果使用,仅用来结束方法。
  3. 定义方法时,方法的结果应该返回给调用者,交由调用者处理。
  4. 方法中只能调用方法或属性,不可以在方法内部定义方法。

Original: https://www.cnblogs.com/xiaozhao01/p/16461035.html
Author: 小钊丶
Title: Java面向对象(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/593521/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java基础 变量名的开头可以使用$

    JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code packag…

    Java 2023年5月29日
    069
  • JavaWeb之如何把请求数据转成实体类

    JavaWeb之如何把请求数据转成实体类 自己写个工具类加入下面两个静态方法 自定一个注解类DateTimeFormatting 调用方式 User user = util.Obj…

    Java 2023年6月5日
    071
  • Java并发编程艺术系列-四、 Java并发编程基础

    四、 Java并发编程基础 本章将着重介绍Java并发编程的基础知识,从启动一个线程到线程间不同 的通信方式,最后通过简单的线程池示例以及应用(简单的Web服务器)来串联本章所介绍…

    Java 2023年6月9日
    0189
  • 六七、《微服务:从设计到部署》–选择部署策略+重构单体应用为微服务

    选择部署策略: 部署单体应用意味着运行一个或多个来自单个较大应用的相同副本。你通常会配置 N 个服务器(物理或虚拟),每台服务器上会运行 M 个应用实例。单体应用的部署并不总是那么…

    Java 2023年6月5日
    070
  • 大佬是如何规范书写代码!

    很多时候我们项目迭代到后期,项目会变得很混乱,往往只有少数人能知道某段代码是干嘛的和该如何去改,或者是干脆谁都不知道,只能靠通过注释去猜测这段代码可能的作用。原因有可能是因为团队内…

    Java 2023年6月5日
    0109
  • 聊聊消息中心的设计与实现逻辑

    厌烦被消息打扰,又怕突然间的安静; 一、业务背景 微服务的架构体系中,会存在很多基础服务,提供一些大部分服务都可能需要的能力,比如文件管理、MQ队列、缓存机制、消息中心等等,这些服…

    Java 2023年6月15日
    070
  • 1111111111111111111111关于学习crm项目中的问题总结,也是自己遇到的一些错误的记录 2022/7/6

    bug thymeleaf 共享域对象 如果需要将对象的数据显示到前台页面我们可以通过使用thymeleaf实现这一点,Thymeleaf是一个动态渲染页面用的,他简单易懂,不像j…

    Java 2023年6月8日
    082
  • CentOS7-Kibana的使用

    1.下载 Kibana官方下载​www.elastic.co 2.安装 2.1 yum安装 kibana.repo [kibana-7.x] name=Kibana reposit…

    Java 2023年6月7日
    080
  • Elasticsearch+kibana+logstash 搭建日志收集分析平台

    Elasticsearch+kibana+logstash 搭建日志收集分析平台 环境搭建: 虚拟机内存配置: sysctl -w vm.max_map_count=262144 …

    Java 2023年6月8日
    092
  • Elasticsearch—DSL搜索实践

    POST http://192.168.2.223:9200/shop/_mapping { "properties": { "id": {…

    Java 2023年6月13日
    088
  • 为什么构造器私有之后不能创建对象了?

    在Java中,我们可以构造方法,而构造方法又分为有参和无参构造方法: /* 无参数的构造方法,如果类中无构造方法,则默认就有一个无参的构造方法,如果类中有带参的构造方法,则默 * …

    Java 2023年6月8日
    066
  • Java(1)初识Java程序

    前言 就国内来说,Java毫无疑问是后端语言中的No.1没有之一,所以今天我们也来0基础学习Java!!!Java的好处(针对测试工程师) 面试加分->涨薪 大多数公司服务端…

    Java 2023年6月9日
    091
  • 开源C# WPF控件库《AduSkin – UI》

    追求极致,永臻完美 A Beautiful WPF Control UI 一款简单漂亮的WPF UI,融合部分开源框架的组件,为个人定制的UI,可供学者参考。https://www…

    Java 2023年5月30日
    0103
  • 二级运算及其性质

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月5日
    081
  • 12.安装证书

    import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import ja…

    Java 2023年6月13日
    066
  • DWR的Reverse Ajax技术实现

    DWR的逆向ajax其实主要包括两种模式:主动模式和被动模式。其中主动模式包括Polling和Comet两种,被动模式只有Piggyback这一种。 所谓的Piggyback指的是…

    Java 2023年6月9日
    099
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球