封装

1、概念:

  将类的某些信息隐藏在类的内部,不允许外部程序访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

2、好处:

a.只能通过规定的方法访问数据

b.隐藏类的实例细节,方便修改和实现

3、封装的实现步骤

①修改属性的可见性——设为private

②创建getter/setter方法,用于属性的读写

③在getter/setter方法中加入属性控制语句,对属性值的合法性进行判断

继承

继承是类与类的一种关系,例如:动物和狗的关系,动物是父类(或基类),狗是子类(或派生类)。

要注意的是,在Java中的继承是单继承,也就是说一个儿子只能有一个爸爸

继承的好处:

  子类拥有父类的所有属性和方法(private除外)

  子类对父类代码的复用

继承的语法规则:

  class  子类  extends  父类    #如: class  Dog extends Animal{ ......  }

方法的重写:

1、什么是方法的重写:

  如果子类对继承父类的方法不满意,是可以重从写父类继承的方法,当调用时会优先调用子类的方法。

2、语法规则:

  返回值类型、方法名、参数类型及个数 都要与从父类继承的方法相同,才叫方法的重写。

继承的初始化顺序:

  若创建一个子类对象,系统会先创建父类的属性进行初始化,再调用父类的构造方法,然后再创建子类的属性进行初始化,最后调用子类的构造方法。

多态

多态指对象的多种引用形态,继承是多态的前提

1、引用多态

  父类的引用可以指向本类对象  Animal object1=new Animal();

  父类的引用可以指向子类对象  Animal object2=new Dog();

  注意:子类的引用不可以指向父类对象Dog object3=new Animal();

2、方法多态

  创建本类对象时,调用的方法为本类的方法;

  创建子类对象时,调用的为方法为子类重写的方法或者继承的方法

  注意:本类对象不能调用子类的方法

引用类型转换:
Dog dog=new Dog();  
Animal animal=dog();  //向上类型转换:(不存在风险)
Dog dog2=(Dog)animal;  //向下类型转换:(存在风险,可能出现数据溢出)
if(animal instenceof Cat){  //用instanceof运算符,来解决引用对象的类型,避免类型转换的安全问题,返回布尔值,来判断animal能否转换为Cat类型
  Cat cat=(Cat)animal;
} 抽象类:
规定子类必须实现某些方法,但不关注实现细节
a.abstract定义抽象类
b.abstract定义抽象方法,只有声明,不需要实现,如:public abstract void demo();  //直接使用分号结尾即可,不能有{ }
c.包含抽象方法的类一定是抽象类(abstract)
d.抽象类中可以包含普通的方法,也可以没有抽象方法
e.抽象类不能直接创建对象,可以定义引用变量
f.抽象类的子类必须实现父类中的所有抽象方法 接口:intreface
接口可以理解为一种特殊的类,由全局常量和公共的抽象方法组成
接口定义了类所需要遵守的规范,接口中的方法类中都必须提供
接口可以有多个父接口
接口一般是需要被继承和实现的,所以通常用public修饰,不能用protect和private
语法:
  [修饰符] interface 接口名 [extends 父接口1,父接口2,父接口3....] {    //如果接口或者接口内的方法不手动添加 abstract ,系统也会默认为abstract
    零到多个常量定义...
    零到多个抽象方法的定义...
  } 通过类使用接口:implements
  [修饰符号] class 类名 extends 父类 implements 接口1,接口2...{
    ...
  } 实现接口的多种方法:
  1、IAnimal demo = new Cat();  demo.eat();
  2、Cat demo = new Cat();  demo.eat();
  3、(用匿名内部类的方式1)
    IAnimal demo = new IAnimal(){
       public void eat(){
       System.out.println("eat");
       }
    };
  4、(用匿名内部类的方式2)
    new IAnimal(){
      public void eat(){
       System.out.println("eat");
       }
    }.eat();

JAVA封装、继承、多态的更多相关文章

  1. Java 封装 继承 多态

    Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法 ...

  2. java面向对象(封装-继承-多态)

    框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...

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

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

  4. Java基础——面向对象(封装——继承——多态 )

    对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...

  5. 浅谈学习C++时用到的【封装继承多态】三个概念

    封装继承多态这三个概念不是C++特有的,而是所有OOP具有的特性. 由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念. 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分 ...

  6. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  7. Java开发知识之Java的继承多态跟接口*

    Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...

  8. Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

    Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 ​ 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...

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

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

  10. python面向对象(封装,继承,多态)

    python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...

随机推荐

  1. Python--day66--模板语言之自定义mysimpletag

  2. Python--day20--模块的导入

    1,模块的导入步骤: 2,,给文件起别名的用处: 重命名之后,原来的名字就不能用了 3,虽然这样写可以,但是不推荐,代码可读性不强,以后代码的修改成本也增加: 4,模块的导入顺序: 5,导入变量名的两 ...

  3. hdu 1708 Fibonacci String

    Fibonacci String Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...

  4. js常见错误类型及chrome常见报错(更新中)

    ECMA-262 定义了下列 7 种错误类型: 1.Error 错误 2.EvalError 全局错误 eval函数没有正确执行 3.RangeError 范围错误 4.ReferenceError ...

  5. 1、Python 日期时间格式化输出

    今天帮朋友写自动化脚本,又需要用格式化日期,又忘记怎么写了,还是写到自己博客里面,方便日后需要的时候看一眼吧.So,临时加一篇 Python 的文章. 1.Python的time模块 import t ...

  6. 如何安装Anaconda和Python

    1.下载安装文件 https://www.anaconda.com/download/ 2.百度安装方法:https://jingyan.baidu.com/article/3f16e0031e875 ...

  7. 如何查看 Python 全部内置变量和内置函数?

    https://jingyan.baidu.com/article/7082dc1c071649e40a89bdb8.html Python 解释器内置了一些常量和函数,叫做内置常量(Built-in ...

  8. python进阶之面向对象初识

    面向对象 不同于面向过程的编程思想,面向对象是一种将程序抽象为一个个对象的编程思想,能更好的处理现实世界到的一些复杂问题. 通过下面的例子来初步了解面向对象的编程方式. class Person: # ...

  9. es6 let和const的用法

    ]()) {; } //console.log(MAX);//MAX is not defined" /*也有暂时性死区,声明的位置需要在使用前面,否则报错: * 不能重复声明变量 * */ ...

  10. H3C 链路聚合显示及维护