封装

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. php页面最大执行时间 set_time_limit函数不起作用

      作者: default|标签:PHP set_time_limit 执行时间|2017-3-21 15:03   set_time_limit 不生效或者无效解决方法 <?php globa ...

  2. js对数组的元素分割

    文章地址 https://www.cnblogs.com/sandraryan/ 不用方法(模拟方法) <script> var arr = ["hi",2,3,tru ...

  3. php检测函数

    验证字符串是否为电子邮箱  var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));       //bob@example.co ...

  4. mysql去重, 把url重复且区为空的中去掉、统计重复数据、、结果集去重合并成一行

    delete from 表名 where id not in (select d.id from (SELECT id FROM 表名 GROUP BY c1,c2,c3,c4)as d) #去重复, ...

  5. windows服务器运维日常--防火墙打开后ping不通

    1. 打开防火墙,有利于安全 2. 添加80端口,支持互联网访问:添加3389端口,以支持远程桌面连接 3. 发现开了防火墙之后,ping不通网址www.mjywxy.xin 4. 查找资料和测试发现 ...

  6. JS(JavaScript)的进一步了解8(更新中···)

    元素节点的树状图 document>documentElement>body>tagName offsetLeft/offsetTop 结合运动 滚动轮播 1.DOM 全称:docu ...

  7. CodeForces - 1162E Thanos Nim (博弈论)

    Alice and Bob are playing a game with nn piles of stones. It is guaranteed that nn is an even number ...

  8. bash: : Too many levels of symbolic links

    ln -s 时 bash: : Too many levels of symbolic links改为绝对路径,

  9. remote api

    iperf -B 99.99.3.1 -c 192.168.42.242 -p 10002 -f m -i 1 -P 1 -w 1M -u -b 1M -t 20 iperf -B 192.168.4 ...

  10. json_encode函数的JOSN_UNESCAPE_UNICODE

    echo  json_encode('测试');  //\u6d4b\u8bd5 echo  json_encode('测试',JSON_UNESCAPED_UNICODE); // 测试 加上JSO ...