1附上Demo1,注释里包含知识点(侧重于对缺省构造方法的理解):
package com.dong.four;
public class Point {
private int x;
private int y;
/*如果自己重新写了个构造方法,此时编译器不会再自动为你加上缺省构造方法(也叫默认构造方法)
*所以如果想使用默认无参的构造方法,就需要重新定义一个无参数的构造方法
* return 关键字可以终止方法的执行,同时也能够返回方法所产生的值,但是在构造方法中
* 是不需要进行加上return 返回值 和 方法返回值类型的 ,因为构造方法肯定是返回当前这个类的对象,
* 如果非要加上return 那么只写 return也可以,并且也不会报错
*
* 编译器识别没有构造方法时,会自动创建一个隐式的构造方法
*/
public Point(int x,int y){
//super 还有这个关键字,这个都是在构造方法的第一行的,也就意味着它执行
this.x = x;//此时如果不加this关键字 写成 x = x 此时编译器都会识别最近的位置的一个x,而不会按照你所想的那样去获得
this.y = y;
}
//重新写一个无参的构造方法
public Point(){
}
public int getDistance(Point p1){
int sum = (this.x-p1.x)*(this.y-p1.y);
return sum;
}
public static void main(String[] args) {
//此时创建两个对象,便于其中的一个方法调用计算方法进行计算出值
Point aa = new Point(1,2);
Point bb = new Point(0,1);
System.out.println(aa.getDistance(bb));//最终输出的结果为1
}
}
2附上Demo2,除了构造方法知识点之外又包含了常量池相关知识点(整形常量池,字符串常量池)
package com.dong.four;
public class TestObject {
// 成员变量
int age;
String name;
Person ps;
// 构造参数,系统会默认会创建无参的构造方法,构造方法名字要和类的名字保持一致,不需要返回值类型
// java中的构造方法是用来初始化一个对象的,并为为实例变量赋予合适的初始值。因此构造方法不需要返回类型。
// 父类的构造方法不能被子类继承 所以用final和abstract修饰没有意义
// 不能被static、final、synchronized、abstract和native修饰;
public TestObject(){
}
//普通方法
public void say(){
}
public static void main(String[] args) {
// 面向对象测试
TestObject t1 = new TestObject();
t1.age=11; // 11 其小于127(也就是整形常量池范围的最大值),可以存放在整形常量池中
t1.name="张三"; // "张三" "AAAA" 这些都是字符串常量 存放在位于方法区中的字符串常量池中(适合JDK1.7以前版本)
Person ppp=new Person();
ppp.name="AAAA";
t1.ps=ppp;//直接赋值给其一个person对象(其实就是存放Person这个对象的堆内存地址)
//直接获取对象变量中的属性值
System.out.println(t1.ps.name);
}
}
//定义一个非public类
class Person{
String name;
}