JAVA_SE_Day08

学习面向对象的三条主线

  • Java类以及类的成员 : 属性 方法 构造器 代码块 内部类
  • 面向对象的三大特征 : 封装 继承 多态
  • 其他关键字 : this super static final abstract interface package import等
面向对象(OOP) : 强调具备了功能的对象,以类/对象为最小的单位
面向过程(POP) : 强调的是功能行为,以函数为最小单位,考虑怎么做

Java 语言的基本元素

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

面向对象程序设计的重点就是类的设计

  • 设计类就是设计类的成员
  • 属性(Field) 对应类中的成员变量
  • 属性(成员变量) VS 局部变量

    相同点

    • 定义的格式 数据类型 变量名 = 变量值
    • 先声明 后使用
    • 变量都有其对应的作用域

    不同点

    • 在类中的声明位置不同
      • 属性定义一对在{}中
      • 局部变量 声明在方法内 方法形参 代码块内 构造器形参 构造器内部的变量
    • 权限修饰符不同
      • 属性在声明的时候,可以使用权限修饰符 private public 缺省 protected
      • 局部变量不能使用权限修饰符
    • 默认初始化值的不同
      • 属性 : 根据其类型,都有其默认初始化值
        byte short int long – 0
        float double – 0.0
        char – 0 或 ‘\u0000’
        boolean – false
        引用数据类型 – null
      • 局部变量 没有默认初始化值
        在使用局部变量之前,一定要先赋值
        形参是调用时 赋值即可
    • 在内存的位置不同
      • 属性 加载到堆空间
      • 局部变量 加载到栈空间
  • 行为(Method) 对应类中的成员方法
    • 方法的声明 权限修饰符 返回值类型 方法名(形参列表){ 方法体 }
      注意 static final abstract 来修饰的方法
    • 权限修饰符 public private 缺省 protected
    • 返回值类型 如果方法有返回值,一定要指定返回类的类型并在方法体中通过return返回值
    • 方法名 属于表示符 要求见名知意
    • 形参列表 数据类型1 形参1,数据类型2 形参2
    • 方法体 方法功能的体现
  • return关键字的使用
    • 使用在方法体中
    • 作用
      • 结束方法
      • 针对于有返回值的方法,使用return 数据 方法返回所需要的数据
    • return关键字后不可以声明执行语句
  • 方法的使用
    • 可以调用当前类的属性和方法
    • 不可以在方法中定义方法
public class Test {
	public static void main(String[] args) {
		// 创建Person类的对象
		Person p1 = new Person();
		// 调用对象的方法和属性
		p1.name = "小华";
		p1.age = 18;
		p1.isMale = true;
		System.out.println(p1);
		p1.eat();
		p1.sleep();
		p1.talk("汉语");
		
		// 创建Circle对象 计算其面积和周长
		Circle cir = new Circle();
		cir.r = 4.0;
		System.out.println("周长 "+cir.getlong());
		System.out.println("面积 "+cir.getare());
		
		// 创建学生对象, 模拟数组
		Student[] sts = new Student[20];
		for (int i = 0 ; i < sts.length; i++) {
			Student s = new Student();
			s.number = i + 1;
			// [1,6]    [a,b] Math.random()*(a - b + 1) + b
			s.state = (int) (Math.random()*(6 - 1 + 1) + 1);
			// [0,100]
			s.score = (int) (Math.random()*(100 - 0 + 1));
			sts[i] = s;
		}
		System.out.println("**********************");
		for(int i = 0; i < sts.length;i++) {
			if(sts[i].state == 3) {
				System.out.println(sts[i].toString());
			}
		}
		System.out.println("**********************");
		// 冒泡排序
		for (int i = 0; i <sts.length-1;i++) {
			for(int j = 0;  j < sts.length - 1 - i; j++) {
				if(sts[j].score >= sts[j+1].score) {
					Student temp = sts[j];
					sts[j] = sts[j+1];
					sts[j+1] = temp;
				}
			}
		}
		// 遍历
		for(int i = 0; i < sts.length;i++) {
			System.out.println(sts[i].toString());
		}
		
		
	}
}

class Person{
	// 属性
	String name;
	int age;
	boolean isMale;
	
	// 方法
	public void eat() {
		System.out.println("人可以吃饭!");
	}
	public void sleep() {
		System.out.println("人可以睡觉!");
	}
	public void talk(String lang) {
		System.out.println("人可以用"+lang+"交谈");
	}
}

class Circle{
	// 属性
	double r;
	// 方法
	public double getare() {
		return r * r * Math.PI;
	}
	public double getlong() {
		return 2 * Math.PI * r;
	}
}

class Student{
	int number;
	int state;
	int score;
	public String toString() {
		return "学号: "+number+",年级: "+state+", 分数: "+score;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

临水而愚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值