栈,堆,重载,重写

    xiaoxiao2021-03-25  118

    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。

    转载请注明原文地址: https://ju.6miu.com/read-6410.html

    最新回复(0)