对象的三大特性 您所在的位置:网站首页 对象属性方法是什么三要素 对象的三大特性

对象的三大特性

2024-06-15 16:12| 来源: 网络整理| 查看: 265

面向对象的三大特性 封装 把客观事物封装成抽象的类,并且类可以把自己的数据和方法让可信的类或对象操作,对不可信的进行信息隐藏。 通过权限设置来限制外部访问,权限修饰符如下几个: private 私有 本类有效 (default) 包权限 protected 包权限和类权限 public 公有公开权限

作用 将内部信息细节隐藏 用private属性

public class Animal{ private String name; //私有权限,本类可以访问 private int age; public double weight; //公开权限 } 继承 它是一种联接类的层次模型,允许和鼓励类的重用,提供的是一种明确表达共性的方法。 一个新类在现有的类派生,新类称为子类,原始类为父类,这是单亲继承。因此子类只有一个父类可以继承,不能有多个,可以多层次继承。

继承条件下的实例化过程 先执行类相关的初始化操作,在执行实例化的顺序 先父再子 单独父或子的初始化顺序同无继承关系时类的实例化顺序

作用 提高代码复用 获得父类的属性、方法 关键词:extends

class B{ int x; } public class A extends B{ B b=new B(); } 多态

定义

父类或接口可以指向子类实例 一个方法可以有不同实现结果 不同类的对象对同一消息做出回应

多态的好处

可替换性:对已存在代码具有可替换性

可扩充性:新增子类不影响已存在类的多态、继承性和其他操作

接口性:多态通过超类方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现

灵活性:操作灵活多样,提高使用效率

简化性:对软件的代码编写和修改过程

向上造型

& 将一个接口引用指向实现类或将一个父类引用指向子类实例 & 只能使用接口或父类的方法,不能使用子类实例的方法 & 只能访问父类或接口的方法,不能使用子类的其他方法 & 调用时真正实现的是子类或实现的方法

参考代码如下:

public interface AirCraft{ //飞行器 void fly(); //飞行方法 } public class UFO extends Wepaon implements AirCaft{//實現接口 public void fly(){ Systme.out.println("小朋友,我来了,别跑"); } } public abstract class Wepaon{ //武器抽象类 public abstract void attack(); //攻击方法 } public class AirCaftApp{ public static void mian(String args[]){ AirCaft ac=new UFO(); ac.fly(); Wepaon wp=new UFO(); //wp.fly(); 只能访问父类或接口的方法,不能使用子类的其他方法 } }

向下造型

强制转换 把上层类型转换为下层的类型,需要通过(目标类型)方式来实现 使用子类不安全 可能出现ClassCaseException instanceof 操作符 实例 instanceof 类型

参考代码如下:

class Animal{ int age=30; public void cry(){ System.out.println("动物在哭:"); } } class Dog extends Animal{ int age=10; public void cry(){ //方法重载 System.out.println("嗷呜~~~~~"); } } class Drogn extends Animal{ int age=15; public void cry(){ System.out.println("昂昂~~~"); } } public class AnimalApp{ public static void main(Stirng args[]){ //向下造型,强制转换 Animal al=new Dog(); al.cry(); System.out.println("动物的年龄:"+al.age); Dog d=(Dog) al; d.cry(); System.out.println("狗的年龄:"+d.age); //出现ClassCaseException 用instanceof if( al instanceof Drogn){ Drogn dg=(Drogn) al; dg.cry(); }else{ System.out.println("非Drogn实例,不能强制转换"; } } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有