面向对象(上)

面向对象(上)

   java面向对象学习三条主线
 * 1.java类及类的成员:属性、方法、构造器、代码块、内部类
 * 2.面向对象的三大特征:封装,继承,多态
 * 3.其他关键字:this,super,static,final,abstract,interface,package,import等

面向对象的三大特征

  • 封装
  • 继承
  • 多态

面向对象的思想概述

  • 类和对象是面向对象的核心概念

    类是对一类事物的描述,是抽象的,概念上的定义
    对象是实际存在的该类事物的每个个体,因此称为实例(instance)
    在java中万事万物皆对象

属性和方法

属性: 对应类中的成员变量

方法:对应类中的成员方法

package com.zx.oop;
/*
 * 类和对象的使用
 * 1.创建类,设计类成员
 * 2.创建类的对象
 * 3.通过对象.属性或对象.方法调用
 */
public class PersonTest {
    public static void main(String[] args) {
        //创建Person类的对象
        Person pe=new Person();

        //调用对象的属性和方法

        //对象.属性
        pe.name="Jack";
        pe.isMale=true;
        System.out.println(pe.name);

        //对象.方法
        pe.eat();
        pe.sleep();
        pe.spke("中国话");
    }

}

class Person{

    //属性
    String name;
    int age = 1;
    boolean isMale;

    //方法
    public void eat() {
        System.out.println("人可以吃饭");
    }

    public void sleep() {
        System.out.println("人可以睡觉");
    }

    public void spke(String language) {
        System.out.println("人可以说话,讲的话是"+language);
    }

}
运行结果:
Jack
人可以吃饭
人可以睡觉
人可以说话,讲的话是中国话

类的多个对象之间的关系

  在上面代码基础的pe.spke("中国话");的后面加上下面代码

        //重新new一个对象
        Person pe2=new Person();
        System.out.println(pe2.name);//默认值为null
        System.out.println(pe2.isMale);//默认值为false

        //pe的对象地址赋值给pe3,所以指向的是堆里面的同一个实体
        Person pe3=pe;
        System.out.println(pe3.name);
        pe3.age=99;
        System.out.println(pe.age);//所以pe.age也是99

类中的属性(成员变量)和局部变量

属性(成员变量)和局部变量

  1. 相同点:
  2. 定义变量的格式是一样的
  3. 先声明,后使用
  4. 变量都有其作用域
  5. 不同点:
  6. 成员变量: 在类体内定义的变量称为成员变量,它的作用域是整个类也就是说在这个类中都可以访问到定义的这个成员变量
  7. 局部变量: 声明在方法内,方法形参,代码块内,构造器形参,构造器内部的变量
成员变量:在声明属性时,指明其权限,使用权限修饰符
局部变量:不可以使用权限修饰符

类的属性根据其类型都有自己的默认初始化值

成员变量:
       整型(byte,short,int,long) 0
       浮点型(float,double) 0.0
       字符型(char) 0或'\u0000'
       布尔型(boolean) false
       引用数据类型:null
局部变量:
       必须在声明的时候初始化值,不然会编译报错,形式参数需要调用的时候才赋值,所以形参没有编译错误

内存中加载的位置

成员变量:加载到堆空间中(非static)
局部变量:加载到栈空间中
public class Demo10 {
    //成员变量
    static int num=100;

    public static void main(String[] args) {
        System.out.println(num);
        add();
    }

    //成员方法
    public static void add(){
        System.out.println("今天赚了"+num);
    }
}
public class Demo10 {
    public static void main(String[] args) {
        int i,j;//main方法里面定义的局部变量
        for (i=1;i

方法

package com.zx.oop;
/*
 * 类中的方法声明和使用
 * 比如   :Math类:sqrt(),random()
 *       Scanner类 :nextInt()
 */
public class UserTest {
    public static void main(String[] args) {
         User user=new User();
         user.eat();
         String where=user.getNation("中国");
         System.out.println(where);
    }
}

//用户类
class User{
    //属性
    String name;
    int age;
    boolean isMale;

    /* 方法的声明
     *
     * 权限修饰符 返回值类型 方法名 (形参列表 ){
     *    方法体
     * }
     *
     * 返回值类型:为有或无,有的话就为其返回的数据类型,无的话写void
     *
     * 方法名:属于标识符,遵循标识符的规范和规则,"见名知意"
     *
     * 形参列表:方法可以声明0个,1个,或多个形参,以逗号分隔
     *
     * return关键字的作用:
     * 使用范围:方法体内
     * 作用:结束方法。针对有返回值类型,使用"return 数据"方法返回所要的数据
     *
     * 方法的使用中:
     * 方法中可以调用当前类的属性或方法
     * 方法
     *
     */

    //void 修饰的表示没有返回值的方法
    public void eat(){
        System.out.println("用户吃饭");
    }

    public void sleep(int hour){
        System.out.println("用户休息了"+hour+"小时");
    }

    /*
     * String表示返回的数据类型为String类型,也可以是其他类型,在方法体中用return关键字返回,
     * 如果没有返回值就用void修饰,通常没有返回值的方法就不用return,只能用"return;"结束方法
     */
    public String getName() {
        return name;
    }

    //String nation是方法里面的形式参数
    public String getNation(String nation) {
        String info="我的国籍是"+nation;
        return info;
    }
}

写的博客是为了面试的时候快速复习,有的知识点疏漏了也可以通过博客查看,坚持学习,坚持写博客。

Original: https://www.cnblogs.com/zxyyds/p/16470904.html
Author: 帆再小也能远航
Title: 面向对象(上)

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

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

(0)

大家都在看

  • 排序算法详解(java代码实现)

    ​ 排序算法大致分为内部排序和外部排序两种 内部排序:待排序的记录全部放到内存中进行排序,时间复杂度也就等于比较的次数 外部排序:数据量很大,内存无法容纳,需要对外存进行访问再排序…

    Java 2023年6月13日
    097
  • springboot 默认异常处理

    SpringBoot默认有自定义异常处理的体系,在做SpringBoot项目的时候,如果是抛出了运行时异常,springBoot并会对异常进行处理,返回如下异常信息: 追究其原因,…

    Java 2023年5月30日
    0143
  • SpringMvc的Mapping

    posted @2021-11-09 16:56 天宇轩-王 阅读(63 ) 评论() 编辑 Original: https://www.cnblogs.com/dalianpai…

    Java 2023年5月30日
    077
  • Seatunnel超高性能分布式数据集成平台使用体会

    @ 概述 定义 使用场景 特点 工作流程 连接器 转换 为何选择SeaTunnel 安装 下载 配置文件 部署模式 入门示例 启动脚本 配置文件使用参数示例 Kafka进Kafka…

    Java 2023年6月5日
    0144
  • Java连载154-IO总结(一)

    一、类图 基本上IO可以分为字节流和字符流 二、字符大小 一般来说一个字母占用一个字节,一个汉字占用两个字节。具体还要看字符编码,比如说在 UTF-8 编码下,一个英文字母(不分大…

    Java 2023年6月13日
    088
  • intellij idea 之 CheckStyle 代码格式校验

    posted @2016-04-06 11:52 聊聊IT那些事 阅读(1967 ) 评论() 编辑 Original: https://www.cnblogs.com/FCWOR…

    Java 2023年6月6日
    096
  • 旧手机改造成web服务器并实现内网穿透

    前几天由于gitee的审核引擎一通乱杀,使得gitee pages停止提供服务,心生更换服务器或者其他pages托管的想法,看了看价格感人的云服务器以及空空的钱包,这时,脑子有个奇…

    Java 2023年6月7日
    087
  • 系统性掌握SpringBoot

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/franson-2016/p/13320880.html…

    Java 2023年5月30日
    090
  • Maven 依赖调解源码解析(二):如何调试 Maven 源码和插件源码

    有了源码包和 Demo 项目,我们就能够着手分析了。那么问题来了,我们对 Maven 源码并不熟悉,总不能一头扎进去看。那么,我们就用调试的方式分析吧,简单且精准。 在 Demo …

    Java 2023年6月16日
    071
  • mysql出现serverTimezone问题

    jdbc:mysql://172.16.50.141:3306/tx-manager?serverTimezone=Asia/Shanghai&characterEncod…

    Java 2023年6月16日
    072
  • 组合模式之对购物网站

    1、 实例概况 用组合模式对购物网站的商品进管理,绘制选择模式的结构图,并绘制该案例的类图,并编写代码演示结果,运行结果样例显示如右图所示。 2、所用模式结构视图 3、实例类图 4…

    Java 2023年6月13日
    093
  • 【LEETCODE】73、根据身高重建队列 第406题

    说实话,这道题我没想出来,但是看解题报告题解比较让人觉得眼前一亮,这里记录下来 package y2019.Algorithm.greedy.medium; import java…

    Java 2023年6月5日
    087
  • Spring整合Redis

    一、准备工作 首先创建一个空工程,然后在该空工程创建一个模块(选择Spring Initializal),选择Spring Data Redis依赖。 pomx.xml

    Java 2023年6月8日
    082
  • Spring boot——JMX 监控

    spring.jmx.enabled=true 在命令行中执行 jconsole命令启动”Java管理和监视控制台”,然后选择org.springframe…

    Java 2023年5月30日
    089
  • Atitit layout art 布局的艺术目录1. SpringLayout 类 弹簧布局管理器 12. BoxLayout( html默认布局) 11.SpringLayout

    Atitit layout art 布局的艺术 1. SpringLayout 类 弹簧布局管理器 2. BoxLayout( html默认布局) 由 SpringLayout 类…

    Java 2023年5月29日
    081
  • 回文字符串_125_680

    题目描述: 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写,和空格影响。 说明:本题中,我们将空字符串定义为有效的回文串。 题目描述: 给定一个非空…

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