JAVA面向对象的理解

一、JAVA中的栈内存与堆内存1 栈内存:存放局部变量,超出作用域会被回收;2 堆内存:创建出来的对象,有java垃圾回收器回收。 二、static与类共存亡

一、JAVA中的栈内存与堆内存

  1.栈内存:存放局部变量,超出作用域会被回收;

  2.堆内存:创建出来的对象,有java垃圾回收器回收。

二、static与类共存亡; 非static与对象共存亡!!

三、对象的比较:

  1.== :比较的是栈内存中的值(地址)

  2.equals : 比较的是内容,重写该方法才有意义!!

四、函数传参是:基本类型是值的拷贝的传递;引用类型是引用的传递!!

五、String的理解:

    new出来的对象与直接写的的区别!!!

  

 1 String s1 = new String("abc");    //2个对象
 2 String s2 = new String("abc");    //2个对象
 3 
 4 System.out.println("s1 == s2 : " + (s1 == s2));//false
 5 System.out.println("s1.equals(s2) : " + s1.equals(s2));//true
 6 
 7 
 8 String s3 = "abc";
 9 String s4 = "abc";
10 
11 System.out.println("s3 == s4 : " + (s3 == s4));//true
12 System.out.println("s3.equals(s4) : " + s3.equals(s4));//true

 六、getClass:

    Class字节码的获取:

      1.通过对象获取;    对象.getClass()

      2.通过类获取;     类.Class

      3.Class的forName方法获取。  Class.forName("com.westos.javase.lesson04_2.Person");  ------->  注意全名

七、抽象类:

    抽象类天生就是用来被继承的;

    抽象类不能被实例化,但可以定义变量指向子类对象;

    其子类必须重写所有方法,否则也必须声明为抽象类; 

    抽象类中可以没有抽象方法;

    抽象类和普通类一样,有构造方法!!!

 

八、接口

    接口中所有方法都是抽象的  ----->  public abstract 

    接口中的变量都是  ------->   public static final

 

    一个类只能继承一个类,但可以实现多个接口:public class SuperMan extends Person implements Run_able,Flyable { }

      解决了不能多继承的问题!!

 

九、抽象类与接口的区别:

    抽象类是继承,接口是实现;

    抽象类是 is a;接口是 like a;

    抽象类定义的是体系内的功能; 接口定义的是体系外的扩展功能!!