java三大特性(封装、继承、多态)
oop(面向对象程序设计)具有三大特性:封装、继承、多态
一、封装
封装就是讲类的信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类的实现隐藏信息的操作和访问。
实现封装
1、需要修改属性的访问控制符(private)
2、创建getter/setter方法(用于属性读写)
3、在getter/setter方法中加入属性控制语句(用于判断属性值的合法性)
public class Student{
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
二、继承
继承是类与类的一种关系,比如说,狗属于动物。可以看成狗类继承了动物类,那么狗类就是动物类的子类(派生类),动物类就是狗类的父类(基类)。在Java中一个子类只能有一个父类。
//父类:动物类
public class Animal{
public int age;
public String name;
public void eat(){
System.out.println("动物具有吃东西的本领!");
}
}
//子类:狗类
public class Dog extends Animal { }
三、 多态
多态指的是对象的多种形态。多态有两种:引用多态和方法多态。继承是多态的实现基础。
1.引用多态
父类的引用可以指向本类的对象;父类的引用可以指向子类的对象。
//父类:动物类
public class Animal{
public int age;
public String name;
public void eat(){
System.out.println("动物具有吃东西的本领!");
}
}
//子类:狗类
public class Dog extends Animal { }
//测试类
public class Test{
public static void main(String[] args) {
//父类的引用可以指向本类的对象
Animal ani1 = new Animal();
//父类的引用可以指向子类的对象
Animal ani2 = new Dog();
}
}
2. 方法多态
创建父类对象时,调用的方法为父类方法;
创建子类对象时,调用的方法是子类重写的方法或继承自父类的方法;
不允许通过父类的引用调用子类独有的方法。
//父类:动物类
public class Animal{
public int age;
public String name;
public void eat(){
System.out.println("动物具有吃东西的本领!");
}
}
//子类:狗类
public class Dog extends Animal {
public void eat(){
System.out.println("狗是吃肉的。");
}
}
//测试类
public class Test{
public static void main(String[] args) {
//父类的引用可以指向本类的对象
Animal ani1 = new Animal();
//父类的引用可以指向子类的对象
Animal ani2 = new Dog();
//输出动物具有吃的本领
ani1.eat();
//输出狗是吃肉的
ani2.eat();
}
}
java三大特性(封装、继承、多态)的更多相关文章
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
- C++三大特性 封装 继承 多态
C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...
- 深入理解Java面向对象三大特性 封装 继承 多态
1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...
- Java 三大特性——封装、继承、多态
一.封装 封装,实际就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用. 概念:在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节 ...
- 浅析Java三大特性封装、继承、多态,及作业分析
前言 本次博客衔接上次博客,作为这一阶段Java学习的分析.上一篇博客着重介绍了Java的OO编程思维,面向对象与面向过程的区别.本篇博客重心在Java的三大技术特性,附带作业分析. Java三大特性 ...
- java面向对象(封装-继承-多态)
框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...
- Java基础——面向对象(封装——继承——多态 )
对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...
- OOP三大核心封装继承多态
OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用 ...
- java 三大特性_继承、封装、多态_day005
一.继承: java的三大特性之一.两个类之间通过extends关键字来描述父子关系,子类便可拥有父类的公共方法和公共属性.子类可以继承父类的方法和属性,子类也可以自己定义没有的方法或者通过覆盖父类的 ...
- JAVA的三大特征 封装继承多态- 简单总结
简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对 ...
随机推荐
- explode 把字符串打散为数组
// 显示的字段列表 $smarty->assign('field_show', explode(',',$list_name)); explode(separator,string,limit ...
- MySQL prompt命令
修改提示符,设置后挺方便的 例如: 几个好用的参数 \d 当前数据库 \u 当前用户 \h 当前主机 更多参数可以参考mysol官方文档 参考文档:https://dev.mysql.com/doc/ ...
- 初步理解require.js模块化编程
初步理解require.js模块化编程 一.Javascript模块化编程 目前,通行的Javascript模块规范共有两种:CommonJS和AMD. 1.commonjs 2009年,美国程序员R ...
- UX2内核浏览加速技术纲要[带你解决WebView卡顿]
UX2内核是本人负责主要开发的浏览服务项目,其主要目的是为开发者提供一个简单好用.轻便的网络浏览服务.UX2内核的安卓端是基于WebView进行深度优化的,同时欢迎大家使用这个内核用于app页面或浏览 ...
- Mavn 使用介绍
1 Maven介绍 1.1 项目开发中遇到的问题 1.都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行? 2.为什么在我的机器上可以正常打包,而配置管理员却打不出来? 3.项目 ...
- webgis开发-开始向JS转向
官方的一个blog Final Release and Support Plan for the ArcGIS APIs / Viewers for Flex and Silverlight 网址: ...
- Github上600多个iOS开源项目地址
将Github上600多个iOS开源项目进行分类并且有相应介绍,小伙伴们快来看呀 地址:http://github.ibireme.com/github/list/ios/
- CSS居中问题:块级元素和行级元素在水平方向以及垂直方向的居中问题
元素的居中问题是每个初学者碰到的第一个大问题,在此我总结了下各种块级 行级 水平 垂直 的居中方法,并尽量给出代码实例. 首先请先明白块级元素和行级元素的区别 块级元素 块级元素水平居中 1:marg ...
- Jenkins在deploy maven artifact时报Peer not authenticated.
这是一起由Nexus证书导入错误造成的Jenkins运行异常. 最近,同事修改了Nexus服务器的host name,结果导致Jenkins里的任务全都执行不了了.虽然job的配置都已经更新指向新的N ...
- July 14th 2017 Week 28th Friday
A life without a dress rehearsal, every day is broadcast live. 人生没有彩排,每天都是现场直播. Every day when I pre ...