zoukankan      html  css  js  c++  java
  • Java中继承,类的高级概念的知识点

    1. 继承含义

    在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(inheritance).

    2. 继承的优点

    A.代码的可重用性

    B.子类可以扩展父类的属性和方法

    C.父类的属性和方法可用于子类

    D.设计应用程序变得更加简单

    3. 如何判断类具有继承关系?

    类与类的关系:  a. has—a(组合关系)

                  b. is—a(继承关系)

    4. Java中继承的实现(关键字:extends)

      关键字extends出现在类声明时的类名后,extends后面跟着的是要继承的类的名称。例如:public class Salary extends Emp{

    }

    5. 继承具有单根性和传递性

    6. 所有类的根类Object(基类,超类)

    public class Emp extends Object{

    }

      Object类中的方法签名:

    A.public final Class getClass( )

    B.public int hashCode( )该方法返回对象的哈希值码。

    C.public boolean equals(Object x)该方法可以检测两个对象是否相等。

    D.protected Object clone() throws CloneNotSupportedException

    E.public String toString()该方法返回对象的字符串表示。

    F.protected void finalize() throws Throwable:该方法在对象将要被垃圾回收时调用。

    G.public final void wait() throws InterruptedException:线程

    H.public final void notify():线程

    7. 方法重写(方法重写出现在子类中,子类重写父类的方法,构造方法不能被继承)

    A.方法重写含义:子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为。

    B.子类重写父类需遵循的规则:

    a. 子类的方法的方法名返回值类型参数列表都必须与父类中的相同

    b. 子类的访问修饰符必须不小于父类中的访问修饰符。(子类中的访问修饰不能比父类中的更严格)

    c. 子类中重写的异常不能抛出比父类更多的异常。

    8. super关键字

    A.子类用关键字super来调用父类中重写的方法(super指代的是父类对象)

    B.使用super调用父类的构造器,如果构造器没有使用super关键字,那么编译器会自动添加一个无参的super()来调用父类构造器

    9. final关键字

    a.final变量不能被改变

    b.final类不能被继承

    c.final方法不能再被重写

    10. 访问修饰符 

     

    本类

    同一包中不同类

    不同包

    子类

    public  

    Y

    Y

    Y

    Y

    protected

    Y

    Y

     

    Y

    default(不写)

    Y

    Y

     

     

    private

    Y

     

     

     

    11. 封装

    A.含义:封装是使类中的成员变量都是private,并提供public方法访问这些成员变量的技术。

    B.封装使用getter,setter,

    例如:public int getId(){

    }

    public void setId(int id){

     this.id = id;

    }

    C.封装优点:

       a.类的成员变量可以成为只读或只写

      b.类可以对存储在其它成员变量中的内容有一个整体的控制

      c类的用户不需要知道类是如何存储数据的

    12. 静态成员:用static修饰的成员,static可以被共享,访问静态成员要使用 类名. 。静态方法不能访问非静态成员。

    13. 静态初始化块:

       例如:public class Rad{

             static {

             //静态代码块出现在构造器之前

    }

    }

    14. 非静态(成员代码块)(实例化初始块):

    例如:public class Rad{

         {

           //实例化初始块

    }

    }

    实例化初始块中的语句在任何父类构造器调用之后,在子类构造器调用之前执行。

    15. 内部类:在类的内部定义的类,内部类所在的类类称为外部类。

    A.内部类的特点 :

    1. 独立的class文件
    2. 同样需要编译
    3. 同样可以产生对象

    B.静态内部类:

    定义方法: class Outer{

         static class Inner{

        //静态内部类不能访问到外部的成员,除非外部成员也是静态成员

    }

    }

    静态内部类创建对象:a.用外部类. b.导入内部类所在的包 c.用全限定名

    C.成员内部类:

    定义方法:class Outer{

         class Inner{

       //成员内部类可以访问到外部的成员

    }

    }

    成员内部类创建对象:Outer outer = new Outer();

                     Outer.Inner inner = outer.new Inner();

    D.局部内部类:只能在方法内部中使用

    定义方法:class Outer{

             Void fd(){

               class Inner{

        //局部内部类

    }

    }

    new Inner().fd();

    }

    E.匿名内部类:没有名字

    形式定义:new 类或接口的名字(){

           //匿名内部类的主体

    }

  • 相关阅读:
    好书推介《实战机器学*》
    Web技术图书名单
    大数据技术书,看看有没有感兴趣的
    博客园设置自定义皮肤,添加自定义小模块悬浮天气组件,github图标链接等
    Final Cut Pro 视频剪辑学习记录,快捷操作等
    css 利用 clip-path 裁剪多边形,三角形,梯形,六边形等
    有呀,有呀,设计!有呀,有呀,组件!
    github README添加badge标识,多彩的tag标签
    vue timeline 开箱即用的时间轴组件,日志更新时间轴组件
    那些需要收藏的网站网址
  • 原文地址:https://www.cnblogs.com/lxh1197412986/p/4456124.html
Copyright © 2011-2022 走看看