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;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42091436/article/details/113059518