封装:
  • 把对象的全部属性和服务结合在一起,形成不可分割的独立单位;
  • 尽可能隐藏内部细节。(数据隐藏、隐藏具体实现的细节)
    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. Java伪代码示例

    学习并转载自https://www.cnblogs.com/z245894546/p/7535261.html import.java.大道至简.*; import.java.愚公移山.*; publ ...

  2. LeetCode: Next Greater Element I

    stack和map用好就行 public class Solution { public int[] nextGreaterElement(int[] findNums, int[] nums) { ...

  3. LCD控制器与帧率、刷新率的关系分析

    源:LCD控制器与帧率.刷新率的关系分析 LCM之Fmark功能 && LCD控制器同LCD驱动器的差别 && 帧率与刷新率的关系 && OLED背光

  4. JavaScript右下角信息提示插件Notyf

    在线演示 本地下载

  5. idea中git合并切换分支等操作

    https://blog.csdn.net/autfish/article/details/52513465

  6. Intellij IDEA生成serialVersionUID

    默认情况下Intellij IDEA不会提示继承了Serializable接口的类生成serialVersionUID的警告.如果需要生成serialVersionUID,就要在Preferences ...

  7. Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】

    转自:https://blog.csdn.net/linxingliang/article/details/52263763 spring boot 自学笔记(三) Redis集成—RedisTemp ...

  8. css transform旋转属性

    将以下代码复制到本地就可以看到效果: <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  9. Nginx的长链接

    网站使用程序discuz3访问都正常,只有用户登录存在异常,具体就是:用户登陆后会马上显示未登录,然后刷新一下又变成了登录中 这个问题的原因显然是由于session导致,后台有多个web机器,当用户登 ...

  10. postgresql centos6.5安装以及常用命令

    今天在centos6.5下安装postgresql数据库,现在整理自己操作步骤. 一. Centos6.5 下安装postgresql9.4 1.1. 显示所有的有关postgresql安装包 yum ...