Java入门7-面向对象基础

其他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、 我们也可以不定义对象的句柄,而直接调用这个对象的方法。这
样的对象叫做匿名对象。如: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);
    }
}

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、在方法体内部声明的变量称为局部变量。
在这里插入图片描述
成员变量和局部变量的区别
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

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[
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.编写类MyDate.java 2.该类有如下构造方法 2.1 无参数构造方法public MyDate(),以当前的系统时间构造MyDate对象 2.2 public MyDate(int year, int month, int day), 以指定的构造MyDate对象 3.该类有如下属性 3.1 private int year ;// 3.2 private int month; // 3.3 private int day; // 4.该类有如下方法 4.1 public String after(int day); //返回当前对象代表的期之后day天的期,比如当前对象是2008-8-8,调用after(5)以后,应该返回2008-8-13,格式可自定义 4.2 public String before(int day); //返回当前对象代表的期之前day天的期,比如当前对象是2008-8-8,调用before(5)以后,应该返回2008-8-3,格式可自定义 4.3 public void setYear(int year); //设置为指定值year 4.4 public void setMonth(int month); //设置为指定值month 4.5 public void setDay(int day); //设置为指定值day 4.6 public int getYear(); //返回当前对象的 4.7 public int getMonth(); //返回当前对象的 4.8 public int getDay(); //返回当前对象的 4.9 public void set (int year, int month, int day); //设置为指定的值yearmonthday 4.10 public String toString();//以字符串形式返回当前对象的,例如20080808,格式可自定义 4.11 public boolean equals(MyDate mydate);//当前对象与另一个对象比较,如果两个对象的均相等,则返回true,反之返回false 5.编写TestMyDate.java,在main方法中对MyDate类的各个方法进行测试 6.按照编程规范为MyDate.java编写规范的代码 7.按照java doc API的要求,对代码编写规范的注释,然后利用javadoc.exe命令生成MyDate.java的API doc 8.撰写上机报告

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值