java三大特性之多态

final关键字


class Fu{

publicvoid show(){

System.out.println("这是绝密资料,任何人不能修改");

}

}

class Zi  extends Fu{

publicvoid show(){

System.out.println("这是一堆垃圾");

}

}

publicclass FinalDemo {

publicstaticvoid main(String[] args) {

Zi z = new Zi();

z.show();

}

}

继承的代码体现,由于继承中方法有一个现象:方法重写。所以,父类的功能,就会被子类给覆盖。有些时候,我们不想让子类去覆盖掉父类的功能,这时候,针对这种情况,Java就提供了一个关键字:final关键字。


class Fu{

publicfinalvoid show(){

System.out.println("这是绝密资料,任何人不能修改");

}

}

class Zi extends Fu{

}

publicclass FinalDemo {

publicstaticvoid main(String[] args) {

Zi z = new Zi();

z.show();

}

}

final关键字是最终的意思,可以修饰类,成员变量,成员方法。

final关键字修饰类,类不能被继承。

final关键字修饰变量,变量就变成了常量,只能被赋值一次。

final关键字修饰方法,方法不能被重写。

final修饰局部变量


publicclass FinalDemo {

publicstaticvoid main(String[] args) {

intx = 0;

x = 10;

finalinty = 100 ;

//y = 200;错误

System.out.println(x);

System.out.println(y);

}

}


class Student{

finalintage = 10;

}

publicclass FinalDemo  {

publicstaticvoid main(String[] args) {

//局部变量是基本数据类型

intx = 0;

x = 10;

finalinty = 100 ;

//y = 200;错误

System.out.println(x);

System.out.println(y);

//局部变量是引用数据类型

Student stu = new Student();

//stu.age = 20;错误

System.out.println(stu.age);

}

}

final修改基本类型:基本类型的值不能发生改变。

final修饰引用类型:引用类型的地址值不能发生改变。但是,该对象的堆内存的值是可以发生改变的,除非该对象的堆内存的值也是final的。

final修饰变量的初始化时机


class Student{

finalintage  ;

{

age = 20;

}

}

publicclass FinalDemo {

publicstaticvoid main(String[] args) {

//局部变量是基本数据类型

intx = 0;

x = 10;

finalinty = 100 ;

//y = 200;错误

System.out.println(x);

System.out.println(y);

//局部变量是引用数据类型

Student stu = new Student();

//stu.age = 20;错误

System.out.println(stu.age);

}

}


class Student{

finalintage  ;

public  Student(){

age = 20;

}

}

publicclass FinalDemo {

publicstaticvoid main(String[] args) {

//局部变量是基本数据类型

intx = 0;

x = 10;

finalinty = 100 ;

//y = 200;错误

System.out.println(x);

System.out.println(y);

//局部变量是引用数据类型

final Student stu = new Student();

//stu.age = 20;错误

System.out.println(stu.age);

//stu = new Student();报错

}

}

被final修饰的变量只能赋值一次。

多态概述

某一个事物,在不同时刻表现出来的不同状态。

例如:

猫可以是猫类型,猫 m =new 猫();

同时猫也是动物的一种,也可以把猫称为动物。动物 d = new 猫();

水在不同时刻有不同的状态。

多态的前提和体现:

有继承关系,有方法重写,有父类引用指向子类对象

多态中的成员访问特点:

成员变量:编译看左边,运行看左边。

构造方法:创建子类对象时候,访问父类的构造方法,对父类的数据进行初始化。

成员方法:编译看左边,运行看右边。

由于成员方法存在方法重写,所以运行看右边。

多态的好处:1.提高了程序的维护性 2.提高了程序的扩展性

多态的弊端:不能访问子类特有功能,那么我们如何才能范文子类特有功能尼?多态的转型。

时间: 2024-08-09 03:32:26

java三大特性之多态的相关文章

理解java三大特性之多态

---恢复内容开始--- 面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承是为了重用父类代码.两个类若存在IS-A的关系就可以使用继承.,同时继承也为实现多态做了铺垫.那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开: 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间

JAVA三大特性之三——多态

作为JAVA的三大特性之一,多态性是很多人都没有弄清楚的一个重要特性,今天我就来从我所理解的角度来说一下. 首先,从他的字面意思来理解,多态,从其字面来理解就是多种形态,多种表现形式.根据这些,我最能想到的例子就是图形,图形是个很大的类,他包含三角形.矩形.圆.梯形.五边形等等,而他们都属于图形类,表现的形式各有特点,属性.方法都不同.所以,我所理解的第一点就是多态指的是子类相对于父类的不同表现形式(包括子类对父类方法的重写,这就是多态的一个重要体现). 另外一点,是我在<Thinking in

Java三大特性之---多态

面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而言它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承是为了重用父类代码.两个类若存在IS-A的关系就可以使用继承,同时继承也为实现多态做了铺垫. 那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开: 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定的,即一个引用变量倒

浅谈Java三大特性之多态

目录 一.前言 二.发生的条件 三.多态包含(或者说体现在)两个方面: 四.示例 感谢阅读 一.前言 这篇讲下三大特性之一的多态,可以通俗得去理解,多种形态,多种姿态... 那么在面向对象的程序设计中,多态是 指什么? Java引用变量有两个类型:一个是编译类型,一个是运行时类型.编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定.如果编译类型和运行时类型不一致,就可能出现所谓的多态(Polymorphism) "多形性"(Polymorphism)从另一个角

java三大特性-----------------------多态

Java三大特性之多态 多态的定义:指允许不同类的对象对同一个消息做出响应,即同一消息可以根据发送对象的不同采用多种行为方式. 就我个人经历来说,对一个新人一开始就理解这个定义还是有一点难度的(可能是我比较蠢).我觉的还是用java的方式来理解可能会简单一点: 多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决

java提高篇(四)_理解java的三大特性之多态 转自 http://cmsblogs.com

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

[转]理解java的三大特性之多态

java提高篇(四)-----理解java的三大特性之多态 面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承是为了重用父类代码.两个类若存在IS-A的关系就可以使用继承.,同时继承也为实现多态做了铺垫.那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开: 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在

Java入门——深入理解Java三大特性

Java入门——深入理解Java三大特性 本Blog内容: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法(getter,setter),如果不想被外界方法,我们大可不必提供方法给外界访问. 封装确实可以使我们容易地修改类的内部实现,而无需修改使用了该类的客户代码. 可以对成员变量进行更精确的控制.(在setter方法中进行实际意义的校验) 总结:控制属性访问权限,不是你想改就能改.容易修改属性类型.精确控制属性的取值范围. 继承 继承是使用已存在的类

面向对象编程(十四)——面向对象三大特性之多态②

面向对象最核心的机制——动态绑定,也叫多态. 通过下面的例子理解动态绑定,即多态 1 package javastudy.summary; 2 3 class Animal { 4 /** 5 * 声明一个私有的成员变量name. 6 */ 7 private String name; 8 9 /** 10 * 在Animal类自定义的构造方法 11 * @param name 12 */ 13 Animal(String name) { 14 this.name = name; 15 } 16