简述Java面向对象三大特征:封装、继承、多态
- 把对象的全部属性和服务结合在一起,形成不可分割的独立单位;
- 尽可能隐藏内部细节。(数据隐藏、隐藏具体实现的细节)
- public:既可以跨类访问,也可以跨包(package)访问
- private:只能被该类对象访问,子类不能访问,更不能跨包访问
- protected:只能被该类本身和子类访问,即使子类不在包中也可以访问
- default:即不添加任何修饰符,只允许同一个包进行访
- 初始化子类必须先初始化父类(虚拟机自动完成)因为子类的构造方法中会调用父类的构造方法
- 单继承性:一个子类只能继承一个父亲
- 关键字super:用来引用自己的父类,比如父类的方法和属性都是可以访问的
2.方法覆盖(也叫方法重写)
- 返回类型、方法名称、参数列表必须与它所覆盖的方法相同
- 访问权限不能缩小
- 不能抛出更多异常
3.方法重载
- 同一个方法(包括父类),方法名相同,参数列表不同,返回类型可相同可不同
4.组合与继承
- 组合是”has-a“的关系。组合指在新类中创建原有类的对象,重复利用已有类的功能。而继承是根据其他类的实现来定义一个类的实现。
- 是面向对象中两种代码复用的方式。
- 能使用组合就尽量不要使用继承。除非是”is-a“的关系否,则不要轻易使用继承。
- 简单说就是子父类(接口或实现类)中的类型转换
- 编译时期:引用变量所属类(父类)中是否有调用方法,如果有编译通过,若没有编译失败。
- 运行时期:如果子类复写了父类方法,运行子类中的方法,若没有运行父类方法
- 和属性一样,static方法不是多态的,无论编译还是运行都参考左边。
- 前面是一个引用类型变量后面是一个类,用于判断前面的对象是否是后面的类的实例,如果是返回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面向对象三大特征:封装、继承、多态的更多相关文章
- JAVA的三大特征 封装继承多态- 简单总结
简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对 ...
- 深入理解Java面向对象三大特性 封装 继承 多态
1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
- JAVA 面向对象 三大特征:继承
什么是继承 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接访 ...
- Java 面向对象三大特征之一: 多态
多态与类型转换 子类重写父类方法 1)位置:子类和父类中有同名的方法 2)方法名相同,返回类型和修饰符相同,参数列表相同 方法体不同 多态的优势和应用场合 多态:同一个引用类型,使用不同的 ...
- 封装继承多态-java面向对象三大特征
第七章 封装和继承 一.面向对象的三大特征 封装.继承.多态 二.封装 将类的属性(字段)设置为私有的(private),并添加getter/setter方法操作属性. 注意:get|set方法的固 ...
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
- OOP三大核心封装继承多态
OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用 ...
- 【JavaSE】面向对象三大特征——封装、继承、多态
前言:本文主要介绍思想 封装 封装这一概念并不仅存在与面向对象中,甚至说封装这一概念不仅限于编程中,其实生活中的封装无处不在.比如 需求:你到银行取钱 参数:你只需要提供银行卡和密码 返回值:柜员会将 ...
随机推荐
- Java伪代码示例
学习并转载自https://www.cnblogs.com/z245894546/p/7535261.html import.java.大道至简.*; import.java.愚公移山.*; publ ...
- LeetCode: Next Greater Element I
stack和map用好就行 public class Solution { public int[] nextGreaterElement(int[] findNums, int[] nums) { ...
- LCD控制器与帧率、刷新率的关系分析
源:LCD控制器与帧率.刷新率的关系分析 LCM之Fmark功能 && LCD控制器同LCD驱动器的差别 && 帧率与刷新率的关系 && OLED背光
- JavaScript右下角信息提示插件Notyf
在线演示 本地下载
- idea中git合并切换分支等操作
https://blog.csdn.net/autfish/article/details/52513465
- Intellij IDEA生成serialVersionUID
默认情况下Intellij IDEA不会提示继承了Serializable接口的类生成serialVersionUID的警告.如果需要生成serialVersionUID,就要在Preferences ...
- Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】
转自:https://blog.csdn.net/linxingliang/article/details/52263763 spring boot 自学笔记(三) Redis集成—RedisTemp ...
- css transform旋转属性
将以下代码复制到本地就可以看到效果: <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- Nginx的长链接
网站使用程序discuz3访问都正常,只有用户登录存在异常,具体就是:用户登陆后会马上显示未登录,然后刷新一下又变成了登录中 这个问题的原因显然是由于session导致,后台有多个web机器,当用户登 ...
- postgresql centos6.5安装以及常用命令
今天在centos6.5下安装postgresql数据库,现在整理自己操作步骤. 一. Centos6.5 下安装postgresql9.4 1.1. 显示所有的有关postgresql安装包 yum ...