学习面向对象的三条主线
- 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 p1 = new Person();
p1.name = "小华";
p1.age = 18;
p1.isMale = true;
System.out.println(p1);
p1.eat();
p1.sleep();
p1.talk("汉语");
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;
s.state = (int) (Math.random()*(6 - 1 + 1) + 1);
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;
}
}