封装:
  • 把对象的全部属性和服务结合在一起,形成不可分割的独立单位;
  • 尽可能隐藏内部细节。(数据隐藏、隐藏具体实现的细节)
    public、private、protected、default
  • public:既可以跨类访问,也可以跨包(package)访问
  • private:只能被该类对象访问,子类不能访问,更不能跨包访问
  • protected:只能被该类本身和子类访问,即使子类不在包中也可以访问
  • default:即不添加任何修饰符,只允许同一个包进行访
继承:
 1. is a 关系(eg:经理 is a 职员)
  • 初始化子类必须先初始化父类(虚拟机自动完成)因为子类的构造方法中会调用父类的构造方法
  • 单继承性:一个子类只能继承一个父亲
  • 关键字super:用来引用自己的父类,比如父类的方法和属性都是可以访问的

2.方法覆盖(也叫方法重写)

  • 返回类型、方法名称、参数列表必须与它所覆盖的方法相同
  • 访问权限不能缩小
  • 不能抛出更多异常

3.方法重载

  • 同一个方法(包括父类),方法名相同,参数列表不同,返回类型可相同可不同

4.组合与继承

  • 组合是”has-a“的关系。组合指在新类中创建原有类的对象,重复利用已有类的功能。而继承是根据其他类的实现来定义一个类的实现。
  • 是面向对象中两种代码复用的方式。
  • 能使用组合就尽量不要使用继承。除非是”is-a“的关系否,则不要轻易使用继承。
多态:
  • 简单说就是子父类(接口或实现类)中的类型转换
  1. 属性的特点:属性不是多态的,当子类中出现相同属性时,以左边的引用为准。
class A{
  int num = 3;
}
class B extends A{
  int num = 5;
}
main{
  A a = new B();
  sop(a.num);  //输出3
  B b = new B();
  sop(b.num);  //输出5
}
 2.非静态私有函数特点:
  • 编译时期:引用变量所属类(父类)中是否有调用方法,如果有编译通过,若没有编译失败。
  • 运行时期:如果子类复写了父类方法,运行子类中的方法,若没有运行父类方法
  3.静态函数特点:
  • 和属性一样,static方法不是多态的,无论编译还是运行都参考左边。
  4.instanceof运算符:
  • 前面是一个引用类型变量后面是一个类,用于判断前面的对象是否是后面的类的实例,如果是返回true,若不是返回false,避免了ClassCastException。

public interface Animal {
  public abstract void eat();
}

public class Cat implements Animal{
  public void eat(){
    System.out.println("chi yu");
  }
  public void catchMouse(){
    System.out.println("zhu lao shu");
  }
}

public class Dog implements Animal{
  public void eat(){
    System.out.println("chi gu tou");
  }
  public void kanHouse(){
    System.out.println("kan men");
  }
}

public class Test {
  public static void main(String[] args) {
  Animal a = new Cat();
  function(a);
  }

  public static void function(Animal a){
  a.eat();
  if(a instanceof Cat){
    Cat c = (Cat)a;
    c.catchMouse();
  }else if(a instanceof Dog){
    Dog d = (Dog)a;
    d.kanHouse();
    }
  }
}

简述Java面向对象三大特征:封装、继承、多态的更多相关文章

  1. JAVA的三大特征 封装继承多态- 简单总结

    简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对 ...

  2. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  3. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  4. JAVA 面向对象 三大特征:继承

    什么是继承 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接访 ...

  5. Java 面向对象三大特征之一: 多态

    多态与类型转换 子类重写父类方法 1)位置:子类和父类中有同名的方法 2)方法名相同,返回类型和修饰符相同,参数列表相同       方法体不同 多态的优势和应用场合 多态:同一个引用类型,使用不同的 ...

  6. 封装继承多态-java面向对象三大特征

    第七章  封装和继承 一.面向对象的三大特征 封装.继承.多态 二.封装 将类的属性(字段)设置为私有的(private),并添加getter/setter方法操作属性. 注意:get|set方法的固 ...

  7. Java三大特性(封装,继承,多态)

    Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...

  8. OOP三大核心封装继承多态

    OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用 ...

  9. 【JavaSE】面向对象三大特征——封装、继承、多态

    前言:本文主要介绍思想 封装 封装这一概念并不仅存在与面向对象中,甚至说封装这一概念不仅限于编程中,其实生活中的封装无处不在.比如 需求:你到银行取钱 参数:你只需要提供银行卡和密码 返回值:柜员会将 ...

随机推荐

  1. SqlHelper简单实现(通过Expression和反射)5.Lambda表达式解析类

    这个ExpressionHelper类,是整个SqlHelper中,最核心的一个类,主要功能就是将Lambda表达式转换为Sql语句.同时这个转换过程比较复杂,所以下面详细讲解一下思路和这个类的作用. ...

  2. dojo 官方翻译 dojo/aspect

    官网地址:http://dojotoolkit.org/reference-guide/1.10/dojo/aspect.html after() 定义:after(target, methodNam ...

  3. Python3.x:pip install pymssql安装时出错

    Python3.x:pip install pymssql安装时出错 一.错误日志 error: Microsoft Visual C++ 14.0 is required. Get it with ...

  4. MySQL java连接被拒绝:java.sql.SQLException: Access denied for user 'root'@'****' (using password: YES)

    //系统运行出现错误:java.sql.SQLException: Access denied for user 'root'@'***.**.**.**' (using password: YES) ...

  5. Pytorch实现卷积神经网络CNN

    Pytorch是torch的Python版本,对TensorFlow造成很大的冲击,TensorFlow无疑是最流行的,但是Pytorch号称在诸多性能上要优于TensorFlow,比如在RNN的训练 ...

  6. Python 面向对象的综合应用

    # 面向对象的综合应用 # 计算器:实现一些基本的计算操作,已经打印结果 # --------------- 代码1 ---------------------- def add(x, y): ret ...

  7. 关于使用UniForm以其他控件为Parent时应该注意的问题

    关于使用UniForm以其他控件为Parent时应该注意的问题: 1,不能在其他组件的oncreate,onbeforeshow,onshow等事件中来生成这样的uniform,否则其上的组件不能显示 ...

  8. quartz(3)--spring整合quartz入门案例

    第一步:导入jar <!-- quartz --> <dependency> <groupId>org.quartz-scheduler</groupId&g ...

  9. Bellman-Ford算法优化

    2017-07-27 16:02:48 writer:pprp 在BEllman-Ford算法中,其最外层的循环的迭代次数为n-1,如果不存在负权回路,需要迭代的次数是远远小于n-1; 如果在某一次迭 ...

  10. 文件与IO-字节输入/输出

    package IoDemo; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce ...