目录
1:类的定义
一个源文件只能由一个public class,但是可以有许多个class
public class Car {
//一个源文件只能有一个public类
}
class Type{
//可以有多个类
}
class Glass{
//但是只是空类,没有意义
}
class Carbody{
}
对于一个类来说一般有有三种成员,第一个是属性,第二个是方法,第三个是构造器(又叫做构造方法),这三种成员都可以定义零个或者三个
属性用于定义类或者说该类对象所包含的数据或者说静态特征,属性的作用范围是整个类体,如果不初始化,java会使用默认的值对其初始化
方法用于定义类,或者该类对象的具体功能和行为动作的实现
在面向过程编程中,函数是最基本的单位,(方法就是函数)但是在面向对象编程的时候整个程序的基本单位是类,方法是从属于对象和类的
下面来定义一个简单的学生类
public class Stu {
//属性
int id;
String name;
String age;
//方法
void thing(){
System.out.println("学习,吃饭,睡觉");
}
//构造方法
Stu(){
}
public static void main(String args[]){
Stu s=new Stu();
System.out.println(s.id);//默认初始化 0
System.out.println(s.name);//null
s.id=20202942;//初始化
s.name="古倪啷虚宇";
System.out.println(s.id);//20202942
System.out.println(s.name);//古倪啷虚宇
}
}
2:简单内存分析_uml类图
方法是共用的
3:构造方法的基本使用
构造器的名称必须和类型名一致
构造器用来给对象初始化,在调用构造器之前,对象就已经建好了
java通过new关键字来调用构造器,从而返回一个类的对象
课堂练习 定义一个“点”(Point)类用来表示二维空间中的点(有两个坐标)。要求如下: 可以生成具有特定坐标的点对象。 提供可以设置坐标的方法。 提供可以计算该“点”距另外一点距离的方法。
public class Point {
double x,y;
Point(double _x,double _y){
this.x=_x;
this.y=_y;
}
double getDistance(Point p){
return Math.sqrt((this.x-p.x)*(this.x-p.x)+(this.y-p.y)*(this.y-p.y));
}
public static void main(String[] args){
Point p=new Point(3.0,4.0);
Point origin=new Point(0.0,0.0);
System.out.println(p.getDistance(origin));
}
}
对象的创建完全是由构造方法实现的吗?
不完全是。构造方法是创建 Java 对象的重要途径,通过 new 关键字调用构造器时,构造器 也确实返回了该类对象,但这个对象并不是完全由构造器负责创建的。创建一个对象分为如下四 步: 1. 分配对象空间,并将对象成员变量初始化为 0 或空
2. 执行属性值的显式初始化
3. 执行构造方法
4. 返回对象的地址给相关的变量
4: 构造器 4 个要点
构造器通过 new 关键字调用!!
构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能 在构造器里使用 return 返回某个值。
如果我们没有定义构造器,则编译器会自动定义一个无参的构造方法。如果已定义 则编译器不会自动添加!
构造器的方法名必须和类名一致!
5:构造器的重载(创建不同的对象)
public class Overload {
int id;
String name;
int age;
public Overload(){
}
public Overload(int id){
this.id=id;
}
public Overload(int id,String name,int age){
this.id=id;
this.name=name;
this.age=age;
}
public static void main(String[] args){
Overload o=new Overload(1100);
Overload oo=new Overload(11001,"古倪啷虚宇",20);
System.out.println(o.id);
System.out.println(oo.id+oo.name+oo.age);
}