Java的三大特性为封装,继承,多态。

封装

封装是 JAVA 面向对象的特点的表现,封装是一种信息隐蔽技术。它有两个含义:即把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位;以及尽可能隐藏对象的内部结构。也就是说,如果我们使用了封装技术的话,别人就只能用我们做出来的东西而看不见我们做的这个东西的内部结构了。

package pojo.demo01;public abstract class Pet {private String name;//名字private int health; //健康值public String getName() {return name;}public void setName(String name) {this.name = name;}public int getHealth() {return health;}public void setHealth(int health) {this.health = health;}//吃东西的方法public abstract void eat();
}

以下提供get(),set()方法和eat()吃东西方法,外部类去调用时只知道方法并不知道内部怎么实现的。

继承

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

示例

package pojo.demo01;public class Dog extends Pet{//重写父类的吃东西的方法public  void eat(){//健康值加15System.out.println("狗狗");System.out.println("健康值为:"+this.getHealth());this.setHealth(this.getHealth()+15);System.out.println("汪汪汪~骨头不错哦,健康值+15");System.out.println("吃完健康值为:"+this.getHealth());};
}

代码中Dog类继承了上面Pet类,具有了Pet宠物类中的get()和set()方法,并且子类继承之后还可以重写父类的方法。

多态

所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

Pet a = dog
Pet b = cat
Pet c = pig
        这里所表现的的就是多态。dog、cat、pig都是pet的子类,我们只是通过酒这一个父类就能够引用不同的子类,这就是多态——我们只有在运行的时候(喝的时候)才会知道引用变量所指向的具体实例对象。所以多态能让子类对象调用同一个父类传参方法而不需要写每个子类都写一个具体的父类方法。多态就是: 同一个引用类型,使用不同的实例而执行不同操作

package pojo.demo01;public class Lady {private String name;//名字public String getName() {return name;}public void setName(String name) {this.name = name;}//构造方法public Lady(String name) {this.name = name;}//养宠物的方法//以父类作为方法的参数,实现多态public void feed(Pet pet){pet.eat();}
}
package pojo.demo01;public abstract class Pet {private String name;//名字private int health; //健康值public String getName() {return name;}public void setName(String name) {this.name = name;}public int getHealth() {return health;}public void setHealth(int health) {this.health = health;}//吃东西的方法public abstract void eat();
}
import pojo.demo01.Cat;
import pojo.demo01.Dog;
import pojo.demo01.Lady;public class Demo01 {public static void main(String[] args) {//创建一个小主人Lady l1 = new Lady("lily");//创建两个宠物,属于小主人的宠物Dog d = new Dog();d.setName("大黄");d.setHealth(60);Cat c = new Cat();c.setName("蓝猫");c.setHealth(50);//小主人喂养小狗l1.feed(d);//小主人喂养小猫l1.feed(c);}
}

多态也可以分为向上转型和向下转型,根据具体的需要来转变状态,装为父对象可以作为形参直接调用父类中的方法,并把自己作为参数,JVM会根据实参来确定调用的子类方法,如果需要调用子类特有的private私有属性和方法,需要强制转型成子类对象,实参与某子类对象不符时不能强制转型,需要用instanceof方法来判断是类型是否一致在强制转型。

public class TestInstanceof {
    public static void main(String[] args) {
        //向上转型
        Pet p = new Dog();
        //向下转型
        Cat c = (Cat)p;//p的实参为Dog类,不能转成Cat()类。
    }
}

借助instanceof来实现向下转型。

public class TestInstanceof {
    public static void main(String[] args) {
        //向上转型
        Pet p = new Dog();
        //判断p是否是Dog类型
        if(p instanceof Dog){
            //如果是,我们就能转换
            Dog d = (Dog)p;
        }else if(p instanceof Cat){
            //向下转型
            Cat c = (Cat)p;
        }
    }
}

JAVA封装,继承,多态详解相关推荐

  1. Java基础知识之封装+继承+多态详解

    前言 这篇博客是基于Java类和对象的基础之上的相关知识点.因为特别重要且语法规则较多,所以想单独总结方便之后复习. 本篇博客涉及知识点思维导图: 目录 1.封装 2.继承 3.多态 1.封装 生活中 ...

  2. 【Java编程进阶】封装继承多态详解

    推荐学习专栏:Java 编程进阶之路[从入门到精通] 文章目录 1. 封装 2. 继承 2.1 继承的语法 2.2 子类重写父类的方法 2.3 子类隐藏父类的方法 2.4 super 关键字 2.5 ...

  3. java封装继承多态的理解_深入理解Java封装、继承、多态

    一:封装 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,常见的实现方式就是:getter.setter. 封装遵循了"开闭原则&qu ...

  4. java封装 继承 多态_Java 封装、继承、多态

    Java 封装.继承.多态 1.封装: 封装的理解: 将类的某些信息隐藏在类的内部,不允许外部程序直接访问,并通过该类提供的方法来实现对隐藏信息的操作和访问.(简单的说就是隐藏对象的信息,留出访问的接 ...

  5. java封装继承多态语法,GO语言中封装,继承,和多态

    ##封装 go中的封装和java的不太一样,在go里面是没有java中的class,不过可以把struct看成一个类,封装可以简单地看作对struct的封装,如下 type obj1 struct { ...

  6. 细品java封装继承多态

    目录: 1.封装 2.继承 3.多态 1.封装 封装的作用:封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没 ...

  7. java封装继承多态的理解_用最傻瓜式的方法理解Java中的封装、继承和多态

    说到java中面向对象的封装.继承和多态,很多人会说这么简单这么入门的东西一直讲干嘛,虽然是基础,但是我们要明白,所有东西都是要在基础上发展的,没有基础就去学其他的,那么你肯定是很容易失败的,那么应该 ...

  8. JAVA封装|继承|多态

    一,继承:面向对象的三大继承之一 子类 | 派生类 : 继承父类的类 定义子类独有的内容 父类 | 超类 | 基类 : 被子类继承的类 所有子类的共性 1,Q&A 1.为什么要使用继承 ? 为 ...

  9. Java——封装继承多态

    封装 将方法和属性封装到一个对象中,对外提供方法用于改变该对象的属性值. public class Person { private String name; private Integer age; ...

  10. Java封装继承多态练习题

    题目描述 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类, 属性:员工的姓名,员工的生日月份. 方法:getSalary(intmonth) 根据参数月份来确定工资,如果该月员工 ...

最新文章

  1. ACdream 1224 Robbers (贪心)
  2. 如何从值获取C#枚举描述? [重复]
  3. DCNv2 windows编译 2021ok
  4. BeautifulSoup库之find_all函数_Python系列学习笔记
  5. html语言文本框的符号,如何将文本框中的值作为HTML字符串提交?
  6. 蚂蚁金服冯柯:下一个十年,核心自研技术将迎来黄金发展期
  7. 决战双十一,促销海报设计模板,学习起来
  8. u盘如何修复 新萝卜U盘官方网站原创
  9. dotween路径移动_unity 移动物体到指定位置的几种方法
  10. 程序员年薪40万被国企同学怒怼:没啥贡献,工资这么高,凭什么?
  11. 天池-小布助手对话短文本语义匹配 复赛rank3、决赛rank4代码及解决方案
  12. oracle数据库查看防火墙,Oracle数据库防火墙简介
  13. 计算机系统记忆部件是,什么是计算机系统的记忆部件
  14. IP-guard功能详解—即时通讯监控
  15. 自制VOC2007数据集——train、trainval、val、test文件的生成
  16. 批处理——提取SRT文字中的文字
  17. 求3000以内的亲密数C语言
  18. 数字图像处理第六章——彩色图像处理(上)
  19. 【Error】解决:Not creating XLA devices, tf_xla_enable_xla_devices not set
  20. preempt rt对pagefault的处理

热门文章

  1. 16个外接SMA天线R2000超高频RFID写卡器HXU2899M上位机命令数据块
  2. ca盘显示无证书_ca证书提示没有正确的安装驱动程序
  3. sinx加expx定积分计算c语言,8.13 写一个用矩阵法求定积分的通用函数,分别求 sinx,cosx,exp(x)的积分;...
  4. Makima修正Hermite插值
  5. 游戏角色开始动起来了,真帅!【python 游戏实战 03】
  6. rss客户端reeder(iphone)使用技巧
  7. 项目启动时,出现了Consider defining a bean of type ‘xxx’ in your configuration 问题。
  8. 闲时看看, 比较有益的文章地址
  9. 8uftp服务器用户名密码,8uftp怎么用,8uftp怎么用,详细介绍8uftp的用法
  10. 用ps制作LOGO(个人向)