1.栈,堆,
1)public class Student{}类中没有定义任何方法,但是有一个它本身的构造方法 (构造器)
public class Student{ Stuent (){} }其中 Student(){} 就是构造函数(构造器)2)创建对象时
public class Student { Student A = new Student(); }首先将A压入栈,将new Student()放入堆new Student 有一个地址
在执行=(Studengt A=new Student)s时,将这个地址赋值给A(也就是说 A代表的是这个地址)
public class Test { public static void main(String[] args) { Student stu = new Student(); Student stu1 = new Student(); stu.name = "张三"; stu1.name = "李四"; stu = stu1; stu.name = "王五"; System.out.println(stu.name); System.out.println(stu1.name); stu = new Student(); stu1 = stu; stu="麻子"; System.out.println(stu.name); System.out.println(stu1.name); 第一次都是输出 王五 第二次则为 麻子2.重载
一个函数中可以定义多个 方法名一样 参数(指参数的类型或者顺序或者个数)不一样的 方法
public class Teacher { public Teacher(){ } public Teacher(int a){ } public Teacher(String b){ } public void teach(){ System.out.println("教学方法1"); } public void teach(int a){ System.out.println("教学方法2"); } public void teach(String a){ System.out.println("教学方法3"); } public void teach(int a,String b){ System.out.println("教学方法4"); } public void teach(String a,int b){ System.out.println("教学方法5"); } }上面 有多个名为teach的方法应为参数列表不一样所以是方法的重载(其实就是为了方便使用功能类似的方法处理不同类型的数据)3.重写
重写得从继承开始讲
若类A的所有方法(私有和构造除外)类B都要, 则可以用
public class B extends class A{}这时类B就是类A的子类,类A就是累B的父类但是如果累A中的某些方法类B不想要,就可以用重写来解决
public class A { public int add(int a,int b) { return a+ b; } } public class B extends class A{ public int add(int a,int b) { return a; } }类B继承类A,如果累B中没有重写add,那么在类B中用add可以计算出a+b的值,但是累B中重写了add public int add(int a,int b) { return (int a) } 所以在类B中用add只能得到最开始输入的那个数a。