上完课,一直不理解为什么要构造器,后面在百度了解了下;
如果要使用一个类,肯定离不开JVM。在程序执行中,
JVM通过装载,链接,初始化这3个步骤完成.初始化这一步骤是由构造方法来完成的,
只有初始化后类的对象才可以正常使用
复制代码
课程笔记:
初始化(构造器):初始化类的对象,为属性赋初值
格式:访问修饰词 方法名(参数0-n个){ 方法体}
1. 访问修饰词(public)
2. 方法名与类名一致
3. 没有返回类型
注:
1. 当类中没有定义构造器时,则类中默认提供一个缺省构造器(无参构造器)
2. 当类中含有有参构造器时,则类中不再提供缺省构造器,如果要使用,则需要
自定义一个无参构造器
this关键词:属性、构造器、方法,只能在类里面
无继承时初始化顺序:静态---非静态---构造器
包pakage:包就是文件夹
作用:实现跨包类的重名,方便管理代码
使用:
1. 包名.类名(类全名)
2. Import
访问修饰词:无继承时
public protected 不写(默认) private
本类 可用 可用 可用 可用
同包下的类 可用 可用 可用 可用
跨包 可用 不可用 不可用 不可用
复制代码
作业:创建一个只有一个构造器的类TShape(代表三角形类),该类内部有三个整型数a,b,c分别代表三角形的三条边,构造器接收三个参数并赋值给a,b,c,(验证直接写new TShape()这样来构造三角形会报错,说明原因,如果要让他不报错,应该如何做),该类中有两个方法其中一个area()方法没有参数返回三角形的面积,另一个是判断是不是三角形的方法isT()该方法也没有参数,返回一个boolean型表示是不是三角形,area()方法调用以前要调用isT来决断是不是三角形,如果不是返回-1,再编写一个主函数验证这个类的运行结果。
public class TShape {
int a;
int b;
int c;
public TShape(int a,int b, int c){
this.a=a;
this.b=b;
this.c=c;
}
public void area(){
double p=(a+b+c)/2;
double s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
System.out.println(s);
}
public boolean isT(){
return a+b>c&&a+c>b&&b+c>a;
}
public static void main(String[] args) {
TShape san=new TShape(6,6,6);//直接TShape()的话会报错,要求是要有参数传入;
if (san.isT()){
san.area();
}else {
System.out.println(-1);
}
}
}
复制代码