码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java入门7-面向对象基础


    文章目录

    • 其他Java基础文章
    • 面向对象基础
      • 01-面向过程与面向对象
      • 02-两个要素:类和对象
      • 03-对象的创建和使用
        • 类的访问机制
        • 内存解析
        • 匿名对象
      • 04-类的成员之一:属性(field)
        • 语法格式
        • 变量的分类
        • 对象属性的默认初始化赋值
      • 05-类的成员之二:方法(method)
        • 方法的声明格式
        • 练习-类的设计
        • 练习-方法声明
        • 练习-对象数组
        • 自定义数组的工具类
        • 方法的重载(overload)
        • 可变个数的形参
        • 方法参数的值传递机制
          • 基本数据类型的参数传递
          • 引用数据类型的参数传递
          • 练习-方法的参数传递
        • 递归(recursion)方法
          • 计算1-n之间所有自然数的和、乘积
          • 练习二
          • 求斐波那契数列的第n个值
      • 06-面向对象特征之一:封装与隐藏
        • 信息的封装和隐藏
        • 四种访问权限修饰符
      • 07-类的成员之三:构造器(或构造方法)
        • 语法格式
        • 构造器重载
        • 属性赋值过程
        • JavaBean
        • UML类图
      • 08-关键字:this的使用
        • 使用this调用属性、方法
        • 使用this调用本类构造器
      • 09-关键字:package、import的使用
        • package
        • 源文件布局
        • MVC设计模式的理解
        • JDK中主要的包介绍
        • import
      • 10-关键字:native

    其他Java基础文章

    面向对象基础

    01-面向过程与面向对象

    在这里插入图片描述

    02-两个要素:类和对象

    概念:
    类(Class)和对象(Object)是面向对象的核心概念。

    • 类是对一类事物的描述,是抽象的、概念上的定义。
    • 对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。

    在这里插入图片描述
    类的成员构成:
    在这里插入图片描述

    03-对象的创建和使用

    在这里插入图片描述

    类的访问机制

    1、在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static,编译不通过。)
    2、在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中
    定义的成员。

    内存解析

    在这里插入图片描述
    在这里插入图片描述

    class Car{
       
    	String color = "red";
    	int num = 4;
    	void show(){
       
    		System.out.println("color="+color+"..num="+num);
    	}
    }
    class CarTest {
       
    	public static void main(String[] args) {
       
    		Car c1 = new Car(); //建立对象c1
    		Car c2 = new Car(); //建立对象c2
    		c1.color = "blue"; //对对象的属性进行修改
    		c1.show(); //使用对象的方法
    		c2.show();
    	} 
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述
    对象数组的内存解析:
    在这里插入图片描述

    匿名对象

    1、 我们也可以不定义对象的句柄,而直接调用这个对象的方法。这
    样的对象叫做匿名对象。如:new Person().shout();
    2、如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。我们经常将匿名对象作为实参传递给一个方法调用。
    匿名对象的使用:

    public class InstanceTest {
       
        public static void main(String[] args) {
       
            Phone p = new Phone();
    //      p = null;
            System.out.println(p);
            p.sendMail();
            p.playGame();
    
            // 匿名对象
            new Phone().price = 5999;
            new Phone().showPrice(); // 0.0 两次new的对象不同
    
            // 匿名对象的使用
            PhoneMall mall = new PhoneMall();
            mall.show(new Phone());
        }
    }
    
    class PhoneMall {
       
        public void show(Phone phone) {
       
            phone.sendMail();
            phone.playGame();
        }
    }
    
    class Phone {
       
        double price;
    
        public void sendMail() {
       
            System.out.println("发邮件");
        }
    
        public void playGame() {
       
            System.out.println("打游戏");
        }
    
        public void showPrice() {
       
            System.out.println("手机的价格为:" + price);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    04-类的成员之一:属性(field)

    语法格式

    语法格式:修饰符 数据类型 属性名 = 初始化值 ;
    1、常用的权限修饰符有:private、缺省、protected、public;其他修饰符:static、final (暂不考虑)
    2、数据类型:任何基本数据类型(如int、Boolean) 或 任何引用数据类型。
    3、属性名: 属于标识符,符合命名规则和规范即可。
    举例:

    public class Person{
       
    	private int age; //声明private变量 age
    	public String name = “Lila”; //声明public变量 name
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    变量的分类

    成员变量与局部变量:
    1、在方法体外,类体内声明的变量称为成员变量。
    2、在方法体内部声明的变量称为局部变量。
    在这里插入图片描述
    成员变量和局部变量的区别:
    在这里插入图片描述
    在这里插入图片描述

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

    在这里插入图片描述

    05-类的成员之二:方法(method)

    方法的声明格式

    在这里插入图片描述
    【注意】
    1、没有具体返回值的情况,返回值类型用关键字void表示,那么方法体中可以不必使用return语句。如果使用,仅用来结束方法。
    2、方法中只能调用方法或属性,不可以在方法内部定义方法。

    练习-类的设计

    1、1.创建一个Person类,其定义如下:
    2、利用面向对象的编程方法,设计类Circle计算圆的面积。

    练习-方法声明

    3-1、编写程序,声明一个method方法,在方法中打印一个108 的型矩形,
    在main方法中调用该方法。

    3-2、修改上一个程序,在method方法中,除打印一个108的型矩形外,再
    计算该矩形的面积,并将其作为方法返回值。在main方法中调用该方法,
    接收返回的面积值并打印。

    3-3、修改上一个程序,在method方法提供m和n两个参数,方法中打印一个
    mn的型矩形,并计算该矩形的面积, 将其作为方法返回值。在main方法
    中调用该方法,接收返回的面积值并打印。

    练习-对象数组

    4、定义类Student,包含三个属性:学号number(int),年级state(int),成绩
    score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。
    问题一:打印出3年级(state值为3)的学生信息。
    问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息。
    【提示】:
    1)生成随机数:Math.random(),返回值类型double;
    2) 四舍五入取整:Math.round(double d),返回值类型long。

    5、声明一个日期类型MyDate:有属性:年year,月month,日day。创建2个日期对象,分别赋值为:你的出生日期,你对象的出生日期,并显示信息。

    自定义数组的工具类

    • ArrayUtil:求数组的最大值、求数组的最小值、求数组总和、求数组平均值、反转数组、复制数组、数组排序、遍历数组、查找指定元素

    冒泡排序:
    1、第一层循环是用来控制趟数,也就是 n 个数就要比较 n-1 趟;那么第二层循环能不能具体解答一下呢?
    2、第二层是控制第 i + 1 趟(因为循环中 i 是从 0 开始的)的比较次数,那么 i+1 趟就是比较了 N - 1 - i次。

    /*
     * 自定义数组工具类
     */
    public class ArrayUtil {
       
    	// 求数组的最大值
    	public int getMax(int[] arr) {
       
    		int maxValue = arr[0];
    		for (int i = 1; i < arr.length; i++) {
       
    			if (maxValue < arr[i]) {
       
    				maxValue = arr[i];
    			}
    		}
    		return maxValue;
    	}
    
    	// 求数组总和
    	public int getSum(int[] arr) {
       
    		int sum = 0;
    		for (int i = 0; i < arr.length; i++) {
       
    			sum += arr[i];
    		}
    		return sum;
    	}
    
    	// 反转数组
    	public void reverse(int[] arr) {
       
    		for (int i = 0; i < arr.length / 2; i++) {
       
    			int temp = arr[i];
    			arr[i] = arr[arr.length - i - 1];
    			arr[arr.length - i - 1] = temp
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
  • 相关阅读:
    我的十年程序员生涯--考研失利,倒也还好
    表驱动法在STM32中的应用
    微服务环境认证和SSO以及Springboot整合JWT+Shiro
    Web基础与HTTP协议
    前端面试 10个前端小知识
    深度解析:用Python爬虫逆向破解dappradar的URL加密参数(最详细逆向实战教程,小白进阶高手之路)
    【电商运营】直击“废弃购物车”问题核心!
    腾讯的老照片修复算法,我把它搬到网上,随便玩
    JAVASE(复习)——多态
    Linux学习:初识Linux
  • 原文地址:https://blog.csdn.net/qq_48687155/article/details/126908280
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号