面向对象 总结

1 内存管理 : 由JVM管理的

>堆:

=存储new出来的对象(包括实例变量)

=垃圾: 没有任何引用所指向的对象

垃圾回收器(GC)不定时到内存堆中清理垃圾, 回收的过程

中透明的(看不到的), 不一定一发现垃圾就立刻回收, 通过

调用System.gc()建议虚拟机尽快调度GC来回收

=实例变量的生命周期:

创建对象是存储在堆中, 对象被回收时一并被回收

=内存泄漏 : 不再使用的对象没有被及时的回收,

严重的泄漏会导致系统的崩溃

建议: 不再使用的对象应及时将引用设置为null

 

 

>栈 :

=存储正在调用的方法中局部变量(包括方法的参数)

=调用方法时, 会为该方法在栈中分配一块对应的栈帧,

栈帧中存储局部变量(包括方法的参数),方法调用结束时,

栈帧被自动清除, 局部变量一并被清除

 

>方法区:

=存储.class字节码文件(包括静态变量 所有方法)

=方法只有一份, 通过this来区分具体的调用对象

 三大特征总结

1 封装 :

=类 : 封装对象的属性和行为

= 方法: 封装的是具体的业务逻辑实现

= 访问控制修饰符: 封装的是具体的访问权限

2 继承:

=作用 : 代码复用

=超类: 所有派生类所共有的属性和行为

  接口: 部分派生类所共有的属性和行为

  派生/实现类: 派生类所特有的属性和行为

= 单一继承 多接口实现  具有传递性

3 多态 :

= 行为多态 : 所有抽象方法都是多态的(通过重写来表现)

   对象多态: 所有对象都是多态的(通过向上造型为表现)

= 重写  向上造型  强制类型转换  用instanceof判断

补充重点:

1 实例变量和局部变量的区别

 实例变量 :

 =写在类中  方法外

=创建对象是存储在堆中  对象被回收时一并被回收

= 有默认值

局部变量:

=写在方法中

= 调用方法时存储在栈中 , 方法调用结束时与栈帧一并被清除

=没有默认值

Aoo o = new Aoo();-------------a=0
o.show(5);---------------------b=5
 
class Aoo{
    int a;
    void show(int b){
        int c;
        System.out.println(a); //0
        System.out.println(b); //5
        System.out.println(c); //发生编译错误
    }
}

2 面试题 :

 = 问 : java是值传递还是引用传递?

= 答 : java只有值传递 , 基本类型传递的是具体的数 , 引用类型传递的是具体的地址值

3 文档注释 :

为功能性注释 , 只在三个地方使用 , 分别是类上 方法上 和  常量上

//文档注释是功能性注释,只在三个地方使用,分别是类上、方法上和常量上
/**
 * 在类上使用时用于说明当前类的设计目的和整体功能介绍
 * 例如: 此类用于演示java文档注释
 *
 * @author 作者WKJ
 */
public class ApiDocDemo {
    /**
     * sayHi方法中使用的问候语
     */
    public static final String INFO = "你好!";
 
    /**
     * 为指定用户添加问候语
     * @param name 指定用户的名字
     * @return 含有问候语的字符串
     */
    public String sayHi(String name){
        return INFO+name;
    }
}

4 getter/setter方法

class Student{
    private String name;
    private int age;
 
    public String getName(){ //getter获取
        return name;
    }
    public void setName(String name){ //setter设置
        this.name = name;
    }
    public int getAge(){ //getter获取
        return age;
    }
    public void setAge(int age){ //setter设置
        this.age = age;
    }
}
 
//getter和setter的演示
public class GetterSetterDemo {
    public static void main(String[] args) {
        Student zs = new Student();
        zs.setName("zhangsan");
        zs.setAge(25);
        System.out.println(zs.getName());
        System.out.println(zs.getAge());
 
        Student ls = new Student();
        ls.setName("lisi");
        ls.setAge(24);
        System.out.println(ls.getName());
        System.out.println(ls.getAge());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值