Java基础重点回顾


面向对象

面向对象,可以记录生活中的点点滴滴,强调对象,指挥者,将功能封装进对象,强调具备了功能的对象。

面向过程,就是强调的是功能和行为,也就是执行者。

成员变量的区别

 在类中的位置不同
     成员变量:在类中方法外
     局部变量:在方法定义中或者方法声明上
 在内存中的位置不同
    成员变量:在堆内存(成员变量属于对象,对象进堆内存)
    局部变量:在栈内存(局部变量属于方法,方法进栈内存)
  生命周期不同
    成员变量:随着对象的创建而存在,随着对象的消失而消失
    局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
 初始化值不同
    成员变量:有默认初始化值
    局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
    局部变量不被对象所调用。成员变量被对象调用。
 注意事项:
     局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

面向对象的三大特性

封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

继承:

 继承特点
    Java只支持单继承,不支持多继承。(一个儿子只能有一个爹)
         有些语言是支持多继承,格式:extends 类1,类2,...
    Java支持多层继承(继承体系)

 继承的注意事项
    子类只能继承父类所有非私有的成员(成员方法和成员变量)
    子类不能继承父类的构造方法,但是可以通过super(马上讲)关键字去访问父类构造方法。
    不要为了部分功能而去继承
什么时候使用继承
    继承其实体现的是一种关系:"is a"。

多态

 事物存在的多种形态 
多态前提
    要有继承关系。
    要有方法重写。
    要有父类引用指向子类对象。

 this关键字特点
 this是用来区分成员变量和局部变量重名的。this调用的是成员变量。也可调用成员方法。
 通过this调用构造方法,必须放在第一句
 this代表当前对象的引用。哪个对象调用他所在的函数他就代表那个对象

 this和super的使用
    调用成员变量
         this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
         super.成员变量 调用父类的成员变量
    调用构造方法
         this(...)    调用本类的构造方法
         super(...)    调用父类的构造方法
    调用成员方法
         this.成员方法 调用本类的成员方法,也可以调用父类的方法
         super.成员方法 调用父类的成员方法

 static的注意事项
    在静态方法中是没有this关键字的
         如何理解呢?------------这的活用!
             静态是随着类的加载而加载,this是随着对象的创建而存在。
             静态比对象先存在。
    静态方法只能访问静态的成员变量和静态的成员方法
         静态方法:
             成员变量:只能访问静态变量
             成员方法:只能访问静态成员方法
         非静态方法:
             成员变量:可以是静态的,也可以是非静态的
             成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
         简单记:
             静态只能访问静态。

静态变量和成员变量的区别

 静态变量也叫类变量  成员变量也叫对象变量
所属不同
     静态变量属于类,所以也称为为类变量
     成员变量属于对象,所以也称为实例变量(对象变量)
内存中位置不同
     静态变量存储于方法区的静态区
     成员变量存储于堆内存
内存出现时间不同
     静态变量随着类的加载而加载,随着类的消失而消失
     成员变量随着对象的创建而存在,随着对象的消失而消失
调用不同
     静态变量可以通过类名调用,也可以通过对象调用
     成员变量只能通过对象名调用

 方法重写注意事项
    父类中私有方法不能被重写,因为父类私有方法子类根本就无法继承
    子类重写父类方法时,访问权限不能更低
       最好就一致
    父类静态方法,子类也必须通过静态方法进行重写
         其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解(静态只能覆盖静态)
        
    子类重写父类方法的时候,最好声明一模一样。
 Override和Overload的区别?
     overload可以改变返回值类型,只看参数列表
     方法重写:子类中出现了和父类中方法声明一模一样的方法。
    
     方法重载:本类中出现的方法名一样,参数列表不同的方法。与返回值无关。
 final关键字
final修饰特点
     修饰类,类不能被继承
     修饰变量,变量就变成了常量,只能被赋值一次
     修饰方法,方法不能被重写
抽象类特点
    抽象类和抽象方法必须用abstract关键字修饰
         abstract class 类名 {}
         public abstract void eat();
    抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
    抽象类不能实例化那么,抽象类如何实例化呢?
         按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
    抽象类的子类
         要么是抽象类
         要么重写抽象类中的所有抽象方法  

  
接口特点
    接口用关键字interface表示    
         interface 接口名 {}
    类实现接口用implements表示
         class 类名 implements 接口名 {}
    接口不能实例化
         那么,接口如何实例化呢?
         按照多态的方式来实例化。
    接口的子类
         a:可以是抽象类。但是意义不大。
         b:可以是具体类。要重写接口中的所有抽象方法。

抽象类和接口的区别

 成员区别
     抽象类:
         成员变量:可以变量,也可以常量
         构造方法:有
         成员方法:可以抽象,也可以非抽象
     接口:
         成员变量:只可以常量
         成员方法:只可以抽象
        
关系区别
     类与类
         继承,单继承
     类与接口
         实现,单实现,多实现
     接口与接口
         继承,单继承,多继承
        
设计理念区别
     抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。
     接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值