版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1434894
接上文《JavaSE 基础学习之一 —— Java 的简介》
注:本篇文章部分记录时,老师默认我们有较佳的编程功底,故该部分讲的不深入,所以本篇笔记整理的比较简单随意。
类中只能有成员变量和成员函数。
对象就是类的具体实例。
- 如果一个类没有写构造函数,则 jvm 会给一个**无参数的默认构造函数**,即 **public 类名 (){}**;
- 一旦自己声明了构造函数,则这个无参数的默认构造函数就不存在了;
注:Java 数据变量的默认值都为 0
- 一个普通的成员函数访问一个普通的成员变量,前面都可以省略 thisthis(args) 的函数调用:在一个构造函数中的
- 注:匹配过程中,系统会找**最精确**的函数,如果找不到的话,就会寻找能够匹配上的函数;
略。
例:
int add(int ...a) {
int sum = 0;
for(int i : a) sum += i;
return sum;
}
练习:
写一个点类:
- 求一个点到圆心的距离
- 求一个点到另外一个点的距离注:用到 Math.sqrt()
作业:
package MyPoint;
public class MyPoint {
MyPoint(double x, double y) {
this.x = x;
this.y = y;
}
double x, y;
double calcuRawDistance() {
return Math.sqrt(x*x + y*y);
}
double calcuDistance2pt(MyPoint pt) {
return Math.sqrt(Math.pow((this.x - pt.x), 2) + Math.pow((this.y - pt.y), 2));
}
public static void main(String[] args) {
MyPoint pt1 = new MyPoint(1,2);
MyPoint pt2 = new MyPoint(5,7);
System.out.println("Raw Distance: " + pt2.calcuRawDistance());
System.out.println("Distance to Point1: " + pt2.calcuDistance2pt(pt1));
}
}
注:Java 在类中的成员定义时,无顺序关系,都是并列的。
静态成员变量:
静态成员方法:
如:
public class Adder {
// 参数的 ... : jvm 底层将其自动当做数组传入
static int add(int...a) {
int sum = 0;
for(int i : a) {
sum += i;
}
return sum;
}
}
练习:
写一个点类(坐标,构造函数,到圆心的距离,到另外一个点的距离)
再写一个矩形类:
作业:
package MyPoint;
public class Rect {
MyPoint location;
double width, height;
Rect(MyPoint location, double width, double height) {
this.location = location;
this.width = width;
this.height = height;
}
Rect(double x, double y, double width, double height) {
this(new MyPoint(x, y), width, height);
}
double getLength() {
return 2 * (width + height);
}
double getArea() {
return width * height;
}
boolean contains(MyPoint p) {
return p.x >= location.x && p.y >= location.y
&& (p.x - location.x) <= width && (p.y - location.y) <= height;
}
boolean contains(double x, double y) {
return contains(new MyPoint(x, y));
}
}
- import 用于导入包;
- java.lang 包下的类不用导包,可以直接使用;
- **public** - 可以修饰类,成员,可以在不同包下访问;
- **private** - 用于修饰成员,只能在**类的内部访问**;
- **默认的** - 只能在同一包下访问;
- **protected** - 在同一包下可以访问,不同包下的子类可以访问;