java面向对象的三大特性
来源:互联网 发布:手机抢网速软件 编辑:程序博客网 时间:2024/06/04 19:08
1.封装
封装是指将客观事物抽象成类,每个类对自身的数据和方法实行保护。类可以将自己的数据和方法只让可信的类和方法操作,对不可信的进行信息隐蔽。
2.继承
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可从现有的一个类派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类或子类,而原始类称为新类的基类或父类。派生类可以从基类那继承所有东西(成员变量和成员方法)。但不一定都能使用,每个成员都有自己的访问属性,子类是不能访问父类的私有成员和方法的。子类可以修改或增加新的方法使之更适合特殊的需要。
3.多态
多态是指不同类的对象对同一消息做出响应。多态包括参数化多态和包含多态。多态性语言具有灵活、抽象、行为代码、代码共享等优势,很好的解决了应用程序函数同名问题。
java多态的具体表现:
1.方法的重载。重载是指同一个类中有多个相同的方法名,但其参数类型不同。是编译时多态。重载可以被看作一个类中的方法多态性。
2.方法的覆盖。子类可以覆盖父类的方法,因此同样的方法会在父类与子类中有着不同的表现形式。因为是在运行时才知道调用的是子类还是父类的方法,所以是运行时多态。
3.父类的变量可以指向子类的对象,而且可以随时更换其它子类的对象。
下面写一个父类Animal:
public class Animal {public Animal(){System.out.println("这是一只动物");}}再写两个子类Dog和Cat:
public class Dog extends Animal {public Dog() {System.out.println("这是一只狗");}}
public class Cat extends Animal {public Cat(){System.out.println("这是一只猫");}}
再写一个测试类:
public class Text {public static void main(String[] args) {Cat cat = new Cat();System.out.println("-----------");Dog dog = new Dog();}}运行时输出:
这是一只动物
这是一只猫
------------------
这是一只动物
这是一只狗
这个例子很简单,大家都懂!就是简单的子类继承,然后子类实例化。这里需要注意的是:在创建子类对象时,会先调用父类的构造方法,再调用子类的构造方法。
我们把测试类给改一下:
我们把测试类给改一下:
public class Text {public static void main(String[] args) {Animal cat = new Cat();System.out.println("-----------");Animal dog = new Dog();}}运行时输出:
这是一只动物
这是一只猫
------------------
这是一只动物
这是一只狗
输出没有任何问题,但在这个Text类中我们使用父类的变量指向了子类的对象,这就是向上造型。也是多态的一种表现形式。也就是说,对象变量可以保存自己本身的对象及其子类的对象。
向上造型:子类对象-->父类对象 安全
向下造型:父类对象-->子类对象 不安全
下面演示一下向下造型:
public class Text {public static void main(String[] args) {Animal ani = new Animal();Dog dog = (Dog)ani;}}输出结果:
这是一只动物
Exception in thread "main" java.lang.ClassCastException: Animal cannot be cast to Dog
at Text.main(Text.java:6)
此时运行出错,类造型异常。因为此时ani实际指向的就是Animal类,即父类本身。不可能将它看成Dog类。
再来一个Text类:
public class Text {public static void main(String[] args) {Animal ani = new Animal();ani = new Dog();Dog dog = (Dog)ani;}}输出结果:
这是一只动物
这是一只动物
这是一只狗
这是一只动物
这是一只狗
此时运行正常,ani实际指向的就是Dog类的一个对象,所以此时造型成功。
因此向下造型是不安全的,我们必须知道具体的实现类。
阅读全文
0 0
- JAVA面向对象的三大特性
- Java面向对象的三大特性
- java面向对象的三大特性
- Java面向对象的三大特性
- java面向对象的三大特性
- Java面向对象的三大特性
- Java面向对象的三大特性
- JAVA面向对象的三大特性
- Java面向对象的三大特性
- Java面向对象的三大特性
- java面向对象的三大特性
- java面向对象的三大特性
- Java面向对象的三大特性
- java 面向对象的三大特性
- java面向对象的三大特性的学习笔记
- java面向对象三大特性
- 【java】面向对象(三大特性)
- Java面向对象三大特性
- Po_lesson1_CPU_基础_2017/6/7
- mysql 存储引擎
- HRBUST 1316 移动 II 广搜(bfs)+路径打印
- Android 5.0,6.0,7.0重要特性
- 2016湖南省赛-A-2016 (思路)
- java面向对象的三大特性
- linux 串口编程初始化函数
- C++中的指针与引用
- Android 处理事件的两种方式对比
- Java开发Jar包汇总
- 2017.06.07 c++模板的学习
- 单调队列
- ubuntu14.04镜像启动及配置root远程登录
- JTable表头也就是标题行给隐藏